2017-08-24 12 views
0

私はOWASPを初めて使用しているので、以下のケースでOWASPを使用して入力をサニタイズする方法を理解できますか?あなたがサニタイズするOSのライブラリを使用することができOWASPを使用したJavaのクロスサイトスクリプティングの脆弱性を修正しました。

  1. Enumeration<String> EnumHeader = request.getHeaderNames();

  2. Map<String, String[]> pMap = request.getParameterMap();

  3. Object value = request.getHeader(key);

  4. String[] refs = (req.getParameterValues(REFS_NAME));

+0

ルール#0とルール#1を次のサイトから開始します:https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet – fgb

答えて

1

データ検証はXSSの防止に非常に役立ちますが、必ずしも永続XSSのすべてのベースをカバーするとは限りません。 OWASP Java Encoder ProjectまたはOWASP ESAPIのEncoderが提供する適切なコンテキスト出力エンコーディングは、100%有効な保護のみです。この理由の1つが永続的なXSSの場合、汚染されたデータは、同じDBテーブルへの挿入/更新アクセス権を持っているが、適切なデータ検証を行っていない別のアプリケーションによって入力または変更される可能性のあるDBから来る可能性があります。 (つまり、汚染されたデータは、アプリケーション以外の方法でシステムに入力される可能性があります)。したがって、唯一確実な解決策は、適切なコンテキスト出力エンコーディングを行うことです。すでに指摘されているOWASP XSS予防チートシートは、そのすべてを説明する始めるのに最適な場所です。

0

それらの文字列/オブジェクト。

例ライブラリ:

https://finn-no.github.io/xss-html-filter/が次にヘッダーおよびパラメータのそれらのコレクションのためには、Java 8 Streamsを使用してそれらを反復処理でき、新しいフィルタコレクションにマップ(つまり、消毒剤のライブラリを使用)。

+0

このライブラリのアプローチは、regexを使用してhtmlは、脆弱な不正なHTMLを生成する可能性があります。 owasp htmlサニタイザーが優れています。例えば、これは警告を実行します: '123123 ' – fgb

+0

ここで参照されるHTMLフィルタは、アプリケーションがユーザからのHTMLコンテンツを受け入れなければならない特定の使用例を持っています。デフォルトでは、出力をエスケープしないでください。 @fgbも指摘しているように、HTMLをサニタイズする正しい方法は、正規表現ではなくHTMLパーサを使うことです。 – avgvstvs

関連する問題