防止在window.location中使用javascript

时间:2013-01-08 16:11:08

标签: javascript window location xss

我有一个页面,它从查询字符串中的参数重定向到url,如:
page.html中?的redirectUrl = index.html的
在页面内我有这样的代码:
window.localtion.href = redirectUrl;
通过参数使用重定向url是必须的。该页面包含安全的敏感数据。有人可以使用javascript制作网址:
page.html中的redirectUrl = JavaScript的:警报(的document.getElementById( “密码”)值)
安全数据可能被盗。

如何防止绕过javascript代码到window.localtion.href?

2 个答案:

答案 0 :(得分: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来清理输入。如果您正在处理非常敏感或重要的数据,强烈建议您使用服务器端语言来验证和清理您的输入。

答案 1 :(得分:1)

您可以尝试将网址放在anchor element中并检查协议:

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

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

但是,我不确定浏览器支持对此有多好,因为MDN将其列为HTML5功能。