私はすべてのxssトリックを知りません。
Ruby Railsでのプログラミング中、特定のタグのみを許可する sanitizeメソッド を使用して、他のすべてのタグとスクリプトをクリアすることをお勧めします
残りのタグは
"small", "dfn", "sup", "sub", "pre", "blockquote", "ins", "ul", "var", "samp", "del",
"h6", "h5", "h4", "h3", "h2", "h1", "span", "br", "hr", "em", "address", "img", "kbd",
"tt", "a", "acronym", "abbr", "code", "p", "i", "b", "strong", "dd", "dt", "dl", "ol",
"li", "div", "big", "cite"
これらのタグの組み合わせでXSS攻撃を作成することは可能ですか?
はい。ささいなことです。
<div onmouseover="alert(1)" style="position:fixed;left:0;top:0;width:9999px;height:9999px;"></div>
ただし、それを試す前に作業を保存する必要があるかもしれません。画面上でマウスを動かすと、警告が繰り返し表示される場合があります。
もちろん、より良い攻撃は、JavaScriptが呼び出されたらすぐにdiv
を破壊して、正当に見えるようにすることです。
これを回避するには、すべての出力をエスケープする必要があります。
はい、ほとんどすべてのHTMLタグでイベントハンドラーを宣言できます。これらのイベントの一部は、ユーザーの操作なしでページが読み込まれたときにトリガーされる可能性があります。
<img src=x onerror=alert(1) />
イベントタグは、xssをトリガーする唯一の方法ではありません。
<a href=javascript:alert(1)>xss</a>
1つの可能な解決策は、このページに コンテンツセキュリティポリシー を設定することです
X-Content-Security-Policy: unsafe-inline
実際のソリューションを必ずテストしてください。誰かの言葉をとらないでください。 (CSPも新しい)
別のオプションは PHPのHTMLPurifer で、Rubyのサニタイズよりも高度です。
はい:<img onerror=alert(document.cookie) src=1 />
出力エスケープの要件は、ドキュメント内の場所によって異なります。 HTML属性に含めることを意図したテキストは、別の方法でエスケープする必要があります('"
)HTML要素(<>
)、 例えば。 OWASP Enterprise Security API (ESAPI)は、さまざまなコンテキストすべてにエスケープメカニズムを提供するため、これを処理するための優れた方法です。 Rubyバージョンが見つかります Github上 。
多数のHTML XSS攻撃を含む優れた「チートシート」については、こちらを参照してください。 OWASP.org 彼らは非常に独創的になります。このシートを使用して、サイトが構築されたときにサイトをテストし、リストが更新されたときに時々チェックすることは価値があります。
それが役に立てば幸い!