4

次のようなクエリ文字列のパラメータから URL にリダイレクトするページがあります。
page.html?redirectUrl=index.html
ページ内には、次のようなコードがあります

パラメータによるリダイレクト URL を使用する必要があります。ページには安全な機密データが含まれています。
page.html?redirectUrl=javascript:alert(document.getElementById("password").value)のような JavaScript を使用して URL を作成する
と、安全なデータが盗まれる可能性があります。

javascript コードを window.localtion.href にバイパスしないようにするにはどうすればよいですか?

4

2 に答える 2

1

URL をアンカー要素に入れて、プロトコルを確認してみてください。

var anchor = document.createElement("a");
anchor.href = redirectUrl;

if(anchor.protocol != "javascript:") {
    window.localtion.href = redirectUrl;
}

ただし、MDN では HTML5 の機能としてリストされているため、ブラウザーのサポートがこれにどの程度適しているかはわかりません。

于 2013-01-08T16:34:51.590 に答える
1

これは、リダイレクトしない限り機能するようです:

Javascript:

var field = document.getElementById("redirectUrl");
var newValue = String(field.value);
alert(newValue);

基本的に、String コンストラクターを使用して入力を「サニタイズ」します。

これらはおそらく他のケースでより役立つでしょう:

https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet

全体として、Javascript を使用して入力をサニタイズしないことをお勧めします。非常に機密性の高いデータや重要なデータを処理している場合は、サーバー側の言語を使用して入力を検証およびサニタイズすることを強くお勧めします。

于 2013-01-08T16:28:24.703 に答える