1

パラメータの改ざんの問題を解決するために、struts2 アプリケーションに取り組んでいます。アクションに ParameterNameAware インターフェイスを実装することでこれを解決できると聞きましたが、この状態を説明する最良の例が見つかりません。ParameterNameAware の使用方法の良い例を教えてください。迅速な回答をいただければ幸いです。

4

1 に答える 1

1

このインターフェースの全体的な考え方は、有効なパラメータ名のリストを維持し、このリスト (ホワイトリスト) にないリクエスト パラメータを拒否することです。これは、ハッカーが不要なフォーム フィールド値を特定の状況で実行される可能性が高い隠し変数。

これを実装したら、現在のリクエスト スコープ内の不要なパラメータをすぐに拒否するか、この状況をより適切に制御できます。

考えられる実装:

次のように、インターフェイスを実装し、そのメソッドParameterNameAwareをオーバーライドします。acceptableParameterName

  public boolean acceptableParameterName(String parameterName) {

            boolean allowedParameterName = true ;

            if ( parameterName.contains("session")  || parameterName.contains("request") ) {

                    allowedParameterName = false ;

            }

            return allowedParameterName;
    } 

getter メソッドと setter メソッドを持つフォーム Bean にこのインターフェイスを実装する必要があります。この特定の例では、現在のリクエストにリクエストやセッションなどのフォーム フィールド変数が含まれている場合、それは失敗のシナリオです。これは典型的な例です。このリンクに完全なドキュメントがあります Class ParametersInterceptor

于 2012-09-18T05:40:43.820 に答える