3

Owasp Anti samy と Ebay ポリシー ファイルを使用して、Web サイトへの XSS 攻撃を防ぎます。

また、Hibernate 検索を使用してオブジェクトのインデックスを作成しています。

このコードを使用すると:

String html = "special word: été";    

// use the Ebay configuration file    
Policy policy = Policy.getInstance(xssPolicyFile.getInputStream());

AntiSamy as = new AntiSamy();
CleanResults cr = as.scan(html, policy);

// result is now : "special word: été"
result = cr.getCleanHTML();

ご覧のとおり、すべての文字 "é" は HTML エンティティに相当する " é"に変換されています。

私のページは UTF-8 なので、この変換は必要ありません。さらに、このテキストを Hibernate Search でインデックス化すると、単語が html エンティティでインデックス化されるため、インデックスで「été」という単語が見つかりません。

アンチサミーが特殊文字を同等の html エンティティに変換しないように強制するにはどうすればよいですか?

ありがとう

PS: 問題が開かれました: http://code.google.com/p/owaspantisamy/issues/detail?id=99

4

4 に答える 4

3

私は今朝同じ問題に遭遇しました。

クラスにアンチサミーをカプセル化し、apache common-lang の apache StringEscapeUtil を使用して特殊文字を復元します。

 CleanResults cleanResults = antiSamy.scan(taintedHtml);
 cleanedHtml = cleanResults.getCleanHTML();  
 return StringEscapeUtils.unescapeHtml(cleanedHtml)

その結果、HTML で特殊文字がエスケープされることなくクリーンアップされた HTML が得られます。

お役に立てれば。

于 2010-10-29T14:45:49.297 に答える
2

Mohamadがコメントで述べたように、AntisamyはentityEncodeIntlCharsという名前の新しいディレクティブをリリースしました。

詳細は次のとおりです:http ://code.google.com/p/owaspantisamy/source/detail?r = 240

この指令は問題を解決しているようです。

于 2011-09-22T15:12:33.120 に答える
0

これをチェックしてください:http://code.google.com/p/owaspantisamy/source/browse/#svn/trunk/dotNet/current/source/owaspantisamy/html/scan

ソースを取得すると、主要なクラス (AntiSamyDOMScanner、CleanResults) が標準のフレームワーク オブジェクト (XmlDocument など) を使用していることに注意してください。コンパイルしたバイナリをコンパイルして実行し、デバッガーですべてを確認できるようにします。主要なクラスのどれが実際にデータを破損するかを示します。それがあれば、主要なオブジェクトのいくつかのプロパティを変更して停止させるか、独自の後処理を挿入して不正行為を元に戻すことができます (たとえば正規表現を使用)。後で、NoMess という名前の追加のトップレベル プロパティとして公開できます :-)

その点での動作は言語間で異なる可能性があります (トランクには 3 つあります) が、対処しなければならない言語に関係なく、同じ戦術が機能します。

于 2010-08-26T09:38:24.267 に答える
0

AntiSamy のソース コードを精査したところ、AntiSamy を変更する以外にこの動作を変更する方法が見つかりませんでした。

于 2010-08-23T08:07:12.467 に答える