ASP.NETプロジェクトでAjaxControlToolkitを使用していますが、ContentHtmlEditorという名前のHtmlEditorExtenderに問題があります。ContentBoxという名前のTextBoxにアタッチされたHtmlEditorExtender。
XSSアタックを作ってみました。ChromeでHTMLコードを編集し、次の文字列を挿入しました。
<a href='javascript:alert()'>bla-bla-bla</a>
ポストバック後、 ContentBox.Textは<a href="javascript:alert()">bla-bla-bla</a>に等しくなります。
ご覧のとおり、 javascript:alert()は削除されていませんが、私が知っているように、Ajax ControlToolkitHtmlEditorExtenderはAntiXssSanitizerを使用しています。
電話すると
ContentHtmlEditor.SanitizerProvider.GetSafeHtmlFragment("<a href='javascript:alert()'>bla-bla-bla</a>")
それは戻ります:
<a>bla-bla-bla</a>
でも電話すると問題があります
ContentHtmlEditor.SanitizerProvider.GetSafeHtmlFragment("<a href='http://somesite.com'>bla-bla-bla</a>")
それから同じ文字列を返すからです:
<a>bla-bla-bla</a>
しかし、リンクの場合は参照を知る必要があります。
何が問題ですか?また、自分のサイトでXss攻撃を防ぐにはどうすればよいですか?