3

次のコードを検討してください。

function redirect() {
    window.location = "../../index.aspx?<%=Request.QueryString%>";
}

このコードは安全ですか、それともXSS攻撃によって悪用される可能性がありますか?

もしそうなら:

  1. どのように?
  2. それを防ぐ方法は?
4

1 に答える 1

4

これをクエリ文字列と見なします。

Xx"; alert('pwned'); window.location ="whatever

基本的に、完全に任意のJavaScriptを挿入することを許可しています。

最善の解決策:ユーザーから直接入力して、このように使用しないでください。

次善の解決策:JavaScript文字列で使用する前に、JavaScript文字列で使用するためにエンコードします。単純な「ここで発生します。

また; このために誤ってHTMLエンコーディングを行わないでください。それは正しく機能せず、依然として脆弱です。

于 2013-03-12T11:23:56.143 に答える