什么可能是JS中的重定向方法中写response.url的安全替代方法?
问题描述:
安全小组将以下代码报告为跨站点脚本。什么可能是JS中的重定向方法中写response.url的安全替代方法?
redirect: function redirect(ajax, response, status) {
window.location = response.url;
});
他们给了写作的样品中更好的方式
$(document).ready(function(){
$("#myDiv").on("click", "button", function(){
var eid = $("#eid").val();
$("resultsDiv").append(eid);
});
});
但我怎么做我的代码?
答
这是对response.url参数的潜在跨站点脚本,因为如果它包含用户输入并且用户输入javascript: alert(1)
,它将在某些浏览器中运行。这是否可以利用取决于具体情况(如何调用redirect
以及使用何种浏览器)。
其他代码确实没有任何意义。 :)
至于修复,它也取决于上述。确保呼叫者不包含用户输入,并且/或者在redirect()
中您可以实现输入验证(例如,response.url以'http'开头,不包含'javascript:'等等)
另请注意,如果不是跨站脚本,它可以是一个开放的重定向。
所谓的“样本”没有意义!我看不到重定向功能是如何跨站点脚本的。 –