2017-09-27 3 views
0

私はJSoupを見て、OWASP Java HTML sanitizer projectなぜブラックリスト信頼アプローチではなく、OWASPがHTMLをホワイトリストに登録するのですか?

悪い用語を更新しました。 API層に渡されたユーザー入力を消毒してXSS攻撃を防止する目的で、私はこのようなツールに興味があります。 OWASPプロジェクトによれば、

「AntiSamyのユニットテストに95 +%以上のテストを加えただけです。

しかし、私はこれらのテストを自分で見ることはできません。これらのテストは何をカバーしていますか?もっと簡単に言えば、これらのツールが信頼をホワイトリストに設定する理由を知りたいのですが。

ホワイトリストとブラックリストを選択する理由があると確信しています。私はscriptのような既知のXSSの安全でないタグと、on*のような属性だけを許可しません。ブラックリストアプローチは可能ではないようです。

私は推論がこれにどのようなものであるかを知る必要があり、それはテストにあると思われます。たとえば、styleタグを許可しない理由は何ですか? XSSの面で危険ですか、それとも他の理由で存在しますか? (styleはコメントで述べたようにXSSは安全ではないかもしれません:XSS attacks and style attributes

他のタグのXSSの安全でない正当な理由を探しています。ユニットテスト自体は、誰かがそれらを見つける場所を知っていれば十分であるはずです。十分な安全でないタグがあれば、ホワイトリストのアプローチが必要な理由がわかります。

+1

"ブラックリスト"と "ホワイトリスト"を使用すると、私は混乱します。ブラックリストメカニズムは、デフォルトですべてを許可し、ユーザが禁止したいものを明示的にリストする必要があります。 「ホワイトリスト」はデフォルトですべてを拒否し、ユーザーが許可したいものをリストする必要があります。 OWASP Java HTMLサニタイザはホワイトリストを使用します。デフォルトですべてが拒否され、指定したマークアップを許可してポリシーを構築します。 – erickson

+0

@erickson - わかった、私の専門用語は変なものです。リンクをありがとう、それは非常に便利です。前述の「AntiSamyの単体テスト」へのリンクを誰かが提供できる場合、この質問は100%回答されるでしょう。 –

答えて

1

元の反反証テストはAntiSamyTest (antisamy)です。

これらは、AntiSamyTest (owasp)のowaspに適合しました。

は、彼らには、例えば、異なるHTMLフラグメントに対してテストが含まれています。

assertSanitizedDoesNotContain("<TABLE BACKGROUND=\"javascript:alert('XSS')\">", "background"); 

assertSanitizedDoesNotContain("<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K\">", "<meta"); 

は、いくつかの例についてはXSS Evasion Cheat Sheetを参照してください。

ブラックリストを試しましたが、ブラックリストをバイパスするために使用する新しいタグや属性を見つけ出しました。不正なHTMLやその他のエンコーディングはバイパスフィルタで使用され、ブラックリストは非実用的でした。したがって、デフォルトの前提は、タグ、属性、またはスタイルが安全であると明示的に指定されていない場合、安全でないということです。これは、私たちがすでに知っているxss攻撃に対してだけでなく、多くの新しいtyesに対しても保護します。

関連する問題