如本例所示,我正在努力防止交叉脚本攻击
https://localhost:8089/myweb/Logon/Index?ReturnUrl=javascript:{alert(%27xss%27);}
以下是我的登录方法。我正在使用encodeURIComponent编码输入字符串,并在成功返回时使用decodeURIComponent。 (在有效的情况下,ReturnUrl =%2Administration)
如果我在Chrome开发人员工具中设置断点并逐步执行代码,则此代码有效。 (它的工作原理是继续登录并带我到索引页面,而无需执行警报框。)
但是如果我在不打开开发工具的情况下运行它,它将执行JavaScript警报消息并陷入无限循环之类的事情。同样,有时ReturnUrl可以是“ undefined”或什么都不是。它仍然应该导致默认的索引页面。带有未定义字符串的encodeURIComponent会导致我进入错误页面。
我搜索并浏览了有关主题的所有帖子。我仍然被困住。我希望这可以清楚地解释我的问题。如果您想提供帮助但我的问题仍不清楚,请询问。 TIA
LogIn(
userNameVal,
passwordVal,
encodeURIComponent($("#returnUrl").val()),
function(data) {
if (data.Success) {
form.submitted = false;
window.location.href = decodeURIComponent(data.ReturnUrl);
} else {
$("body").removeClass("manualLoading");
$loginErrors.hide();
$loginErrors.html(data.Message);
$loginErrors.fadeIn('fast');
}
},
function() {
$("body").removeClass("manualLoading");
$loginErrors.html("An error occured.");
$loginErrors.fadeIn('fast');
}
);