web-dev-qa-db-ja.com

ユーザー入力をHTMLコメントに含めるべきではないのはなぜですか?

OWASP XSS防止に関するチートシート には、信頼できないデータを配置してはならない場所のリストがあります。

 <script>...NEVER PUT UNTRUSTED DATA HERE...</script>   directly in a script

 <!--...NEVER PUT UNTRUSTED DATA HERE...-->             inside an HTML comment

 <div ...NEVER PUT UNTRUSTED DATA HERE...=test />       in an attribute name

 <NEVER PUT UNTRUSTED DATA HERE... href="/test" />   in a tag name

 <style>...NEVER PUT UNTRUSTED DATA HERE...</style>   directly in CSS

データを他の4つの場所に配置してはいけない理由は理解していますが、ユーザー入力をHTMLコメントに配置する危険性は何ですか? >をエンコードすれば、攻撃を防ぐのに十分だと思います。 HTMLコメント内でJavaScriptを実行する方法はありますか?または、>なしでHTMLコメントを終了する別の方法?

10
tim

HTML5セキュリティチートシート の関連エントリは次のとおりです。

  • バックコメント文字でHTMLコメントを終了する: html5sec#1 (IE6、IE8)
  • XSSの挿入または条件付きコメント html5sec#115 (古いIE、IE奇妙なモード)

そのユーザー入力とは別に、このコメントを条件付きコメント(IEのみ)に変更して、DOMを変更するか、コメントの後のスクリプトの実行をブロックするために使用できます。これにより、意図しない方法でページの動作が変更される可能性があります。

11
Steffen Ullrich

信頼できないデータがすべてである可能性がある場合、たとえば--><script>alert("I just escaped the HTML comment")</script><!--を注入して、次のようなソースコードに表示することができます。<!----><script>alert("I just escaped the HTML comment")</script><!---->(空のコメントに注意してください)

3
Eda190