WebサイトのURLがエンコードされた場合、そのWebサイトはまだXSSに対して脆弱ですか?
たとえば、<script>alert(1)</script>
を試し、サイトのURLがペイロードを%3Cscript%3Ealert(1)%3C%2Fscript%3E
にエンコードした場合、これはサイトがXSSに対して脆弱であるかどうかを示しますか?
答えは、ページがペイロードをレンダリングする方法によって異なります。
ターゲットがHTMLページであり、ペイロードが<script>alert(1)</script>
として表示される場合、CSPまたはChromeのXSS監査者がいないと想定して、XSSが発生します。ただし、HTMLページがペイロードをURL構文でレンダリングする場合、つまり%3Cscript%3Ealert(1)%3C%2Fscript%3E
の場合、XSSはありません。ペイロードが後者に挿入される場所に応じて、"
や'
などの特殊文字も試し、URLコンテキストをエスケープしてHTML(url)タグに直接挿入しようとします。
その特定の例では、そのパラメーターはXSSに対して脆弱ではありません。
それは依存します、あなたは情報の負荷を与えていませんが、一般的に言えばそれは次のようなもののようです:htmlspecialchars(htmlentities($input))
これは信じられないほど安全です。
[〜#〜] site [〜#〜]が脆弱ではないという意味ではなく、特にこのパラメータが安全であるように見えるだけの意味です。
これはまだ依存していますが、入力をリンク、iframe、画像などに挿入するパラメーターですか?別の要素内に挿入する場合は、javascript:
やdata:
などのメソッドを使用していても可能です。