window.location.href的安全修复程序

时间:2017-09-08 07:27:56

标签: javascript security window.location fortify encoder

我有以下的js代码

var a = window.location.href.substring(0,window.location.href.lastIndex('/')+1) + "logout.jsp";

setTimeout(function(){
      window.location.href = a;
},1000);

当我对上述文件运行强化扫描时,它在上述行中显示出安全风险,包括动态代码评估:代码注入。 现在我无法理解如何修复它。我是否需要为window.href添加任何编码器或如何解决此问题。 如果我们编码,我需要做什么。

2 个答案:

答案 0 :(得分:1)

如果我正确理解了逻辑,那么您试图获取没有页面名称的URL的路径,然后您打算重定向到它。

如果这是正确的,您可以使用

使其正常工作
var a = "logout.jsp";

setTimeout(function(){
      window.location.href = a;
},1000);

它应该原则上摆脱漏洞,但我不完全确定该工具是否检测到其中的任何其他漏洞。

答案 1 :(得分:0)

我找到了以下链接......也许它可以帮到你:

https://security.stackexchange.com/questions/151806/jquery-js-dynamic-code-evaluation-code-injection-on-settimeout-line

  

这是误报。

     

报告虚假代码注入漏洞是一个众所周知的问题   使用HP Fortify和has confused developers before。刚刚强化   做Javascript代码的基本静态分析,不能去   任意深入了解它是如何工作的。作为@AlexanderOMara   建议,它似乎发现潜在的危险   version: '3.2' services: nginx: image: nginx volumes: - type: bind source: ../app target: /var/www/app php: image: php volumes: - type: bind source: ../app target: /var/www/app 函数,可以setTimeout()作为字符串   将作为代码执行的参数,就像setInterval()一样。这个   这种漏洞,该工具旨在发现:

eval()
     

但在你的情况下,没有用户提供的,未经过滤的输入   setTimeout('alert(' + document.location.hash.split('#')[1] + ')', 0); 功能因此看起来很安全。离开你   来自链接线程的一个很好的结论:

     
    

我的建议是停止运行HP强化报告。     或者支付五千美元或者其他任何美元去他们的班级,这样你就可以真正了解他们的关键词。

  

Arminius回答。