2009-05-16 13 views
1

与えられた型のパラメータを持つメソッドにアドバイスをする方法はありますか?私は入力フィルタリングが必要なクラスのためにこれを使用するつもりです。一例として、AspectJの与えられた型の任意のパラメータにアドバイスを配置

@Filtered 
class Unsafe { 
    public void doStuff (String input) { ... } 

    public void doMoreStuff (String input, int value, String name) { ... } 
} 

は私が安全にその内容を置き換えることができるように、このクラスのメソッドのいずれかの文字列パラメータに適用されるアドバイスを、書きたい、予防するために(バージョンをエスケープ例えばSQLインジェクション)。

このようなポイントカットを書くことはできますか?

答えて

0

複数の文字列を別々の場所に置くことができるので、どのように行うことができないのですが、両方のクラスで同じメソッドを呼び出してデータベースに書き込む必要があります。その時点で、周囲を使用して文字列を変更して安全にし、代わりにその文字列を渡すことができます。

+0

PATTERN_FOR_METHODS_THAT_TAKES_IN_SQL_STRINGを交換してくださいはい、私はあまりにも、データベース層の上にそれを行うことができ、それはまだクロス・サイド・スクリプティング・インジェクションからの私の妨げにはなりません。したがって、私は最初にウェブからの入力を受け入れるファサードでこれをやりたかったのです。トリッキー。 –

+0

@ Unnfilteredのようにフィルタリングされていない各メソッドでアノテーションを配置して、そのアノテーションのアスペクトを書き込むことはできますが、ターゲットとするパラメータを知る必要があります。 –

0

私の意見では、SQLスティチューニングをとるすべてのメソッドのパターンがあるかどうかを知る必要があります。

そして、あなたはあなたのアドバイスにメソッドの引数を確認することができます。

Object around() : PATTERN_FOR_METHODS_THAT_TAKES_IN_SQL_STRING { 
    Signature sig = thisJoinPointStaticPart.getSignature(); 
    Object[] args = thisJoinPoint.getArgs(); 
    //Check the type of each object in the args, and re-format String type object 

    return proceed();// Continue with the current joint-point method 
} 

は、実際のパターン

関連する問題