7

クエリアイテムを取得してページに作成する簡単なWebページがあります。URLの例:

http://quir.li/player.html?media=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D0VqTwnAuHws

次に、ページのどこかにURLが表示されます。

<span id="sourceUrlDisplay">http://www.youtube.com/watch?v=0VqTwnAuHws</span>

これにより、次のようなものを含むURLがページに読み込まれた場合に、ページがXSSに対して脆弱になると思います。

http://quir.li/player.html?media=<script>alert('test')</script>

<pre>URLをタグにレンダリングしても効果がないことがわかりました。コンテンツが実際には解釈されずに印刷されるだけのHTMLタグのように、これに対する簡単な解決策はありますか?

:この質問はこれと多少似ていますが、より一般的です。

4

3 に答える 3

11

いいえ、HTMLにはXSS攻撃を防ぐようなタグはなく、作成することはできません。たとえば、そのようなタグがあったとしましょう<safe>。攻撃者はそれを閉じるだけで済みます:</safe><script> malicious code </script><safe>

この特定の場合にXSSを停止する方法は、特殊文字を対応するURLエンコードにエスケープすることです。これにより、はにhttp://quir.li/player.html?media=<script>alert('test')</script>なり http://quir.li/player.html?media=%3Cscript%3Ealert('test')%3C%2Fscript%3Eます。

于 2013-01-04T13:45:09.453 に答える
1

HTMLの特殊文字をエスケープして、それらの特殊な意味を削除する必要があります。たとえば、PHPでは、htmlspecialchars()関数はそのようなエスケープを目的としています。

于 2013-01-04T13:44:37.617 に答える
0

言及する価値があると思いますが、実際には、探しているものを正確に実行する2つの(非推奨の)HTMLタグがあり<xmp>ます<listing>。これらのタグ内のHTMLは、ほとんどのブラウザでテキストとして表示されます。

ここでのキーワードは次のとおりです。タグはHTML3.2以降非推奨になりましたが、ChromeとFirefox(および場合によってはさらに多くのブラウザ)で引き続きサポートされているようですが、タグが完全に削除される時期はわかっています。その上、一部のブラウザが誤って実装している可能性があることは不可能ではありません。

結局のところ、他の回答が言うように、HTMLをエスケープしたほうがよいでしょう。

于 2021-05-26T18:07:52.123 に答える