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

时间:2017-11-18 05:52:04

标签: xss

安全团队将以下代码报告为跨站点脚本。

 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);

 });
 });

但我如何为我的代码做到这一点?

1 个答案:

答案 0 :(得分:0)

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

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

至于修复,它还取决于上述情况。确保调用者不包含用户输入,和/或在redirect()中你可以实现输入验证(例如,response.url以'http'开头,不包含'javascript:'等)

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