私はDOMベースのXSS攻撃について本当に混乱しています。私はちょうど私のJSアプリでDOMに(innerHTMLで)出力されているすべてのサーバーの取得データを保護したい。 HTMLエンティティをエスケープするか、安全な属性などのために引用符をエスケープします。次に、私はdomベースのXSSについて読んで、HTMlをエスケープするだけではどう違うのか分かりません。この表で https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#XSS_Prevention_Rules_SummaryJSアプリケーションのDOMベースのXSS保護
、あなたは、DOMベースのXSSの例を参照することができます
<script>document.write("UNTRUSTED INPUT: " + document.location.hash);<script/>
との記事がこの資料に記載されている技術を適用する必要があることを示唆:https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet
はなら、私を修正します私は間違っていますが、この例は単純なhtmlエンティティのエスケープを使用して完全に保護する必要があります。
<script>document.write("UNTRUSTED INPUT: " + escapeHTML(document.location.hash));<script/>
ここで、escapeHTMLはhtmlエンティティをエンコードします。
そして、2番目の記事が何であるか分かりませんが、<%= =>表記は何ですか? (Googleには不可能)サーバー側の言語ですか?それはJSのサーバー側をエスケープする意味があるので、この記事ではそれは何ですかjavascriptサーバー側を生成する人のためのヒントですか?この記事は静的なファイルの通常のJSのためのものであれば、まったく意味がありません。
更新:私は、HTMLをエスケープすることが、innerHTMLメソッドを使用してDOMを動的に挿入するために必要なことを知りたいだけです。もちろん、私はリンクされた最初の記事で指定されているように、URLやスタイルに特別な注意が必要であることを認識しています。
質問全体の回答はわかりませんが、<%= =>はASP – Mazodude
のように見えますが、HTMLを提供しているようにうまくいくはずです。 DOMベースの攻撃は、コアのDOM攻撃ベクトルと関係があります。だから、データを送り返しているときには、あなただけが気にする必要があります。 –