web-dev-qa-db-ja.com

URLエンコーディングを使用したXSS

WebサイトのURLがエンコードされた場合、そのWebサイトはまだXSSに対して脆弱ですか?

たとえば、<script>alert(1)</script>を試し、サイトのURLがペイロードを%3Cscript%3Ealert(1)%3C%2Fscript%3Eにエンコードした場合、これはサイトがXSSに対して脆弱であるかどうかを示しますか?

2
Rifat Shommo

答えは、ページがペイロードをレンダリングする方法によって異なります。

ターゲットがHTMLページであり、ペイロードが<script>alert(1)</script>として表示される場合、CSPまたはChromeのXSS監査者がいないと想定して、XSSが発生します。ただし、HTMLページがペイロードをURL構文でレンダリングする場合、つまり%3Cscript%3Ealert(1)%3C%2Fscript%3Eの場合、XSSはありません。ペイロードが後者に挿入される場所に応じて、"'などの特殊文字も試し、URLコンテキストをエスケープしてHTML(url)タグに直接挿入しようとします。

2
Yuu

その特定の例では、そのパラメーターはXSSに対して脆弱ではありません。

それは依存します、あなたは情報の負荷を与えていませんが、一般的に言えばそれは次のようなもののようです:htmlspecialchars(htmlentities($input))これは信じられないほど安全です。

[〜#〜] site [〜#〜]が脆弱ではないという意味ではなく、特にこのパラメータが安全であるように見えるだけの意味です。

これはまだ依存していますが、入力をリンク、iframe、画像などに挿入するパラメーターですか?別の要素内に挿入する場合は、javascript:data:などのメソッドを使用していても可能です。

0
Cillian Collins