什么可能是JS中的重定向方法中写response.url的安全替代方法?

什么可能是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); 
 

 
}); 
 
});

但我怎么做我的代码?

+0

所谓的“样本”没有意义!我看不到重定向功能是如何跨站点脚本的。 –

这是对response.url参数的潜在跨站点脚本,因为如果它包含用户输入并且用户输入javascript: alert(1),它将在某些浏览器中运行。这是否可以利用取决于具体情况(如何调用redirect以及使用何种浏览器)。

其他代码确实没有任何意义。 :)

至于修复,它也取决于上述。确保呼叫者不包含用户输入,并且/或者在redirect()中您可以实现输入验证(例如,response.url以'http'开头,不包含'javascript:'等等)

另请注意,如果不是跨站脚本,它可以是一个开放的重定向。