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

Javascript window.location.href的安全修复程序,javascript,security,window.location,fortify,encoder,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添

我有下面的js代码

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

setTimeout(function(){
      window.location.href = a;
},1000);
当我对上面的文件运行强化扫描时,它在上面一行显示了一个安全风险,带有动态代码评估:代码注入。 现在我无法理解如何修复它。我是否需要为window.href添加任何编码器,或者如何解决此问题。
另外,如果我们有encode,我需要做什么。

如果我正确理解了逻辑,您将尝试获取不带页面名称的url路径,然后您打算重定向到它

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

var a = "logout.jsp";

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

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

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

这是假阳性。

报告错误的代码注入漏洞是一个众所周知的问题 使用HP强化和。刚强 对Javascript代码进行基本的静态分析,但无法执行 理解它是如何工作的。As@AlexanderOMara 建议,它似乎只是发现了潜在的危险
setTimeout()
函数,该函数可以作为
setInterval()
获取字符串 将作为代码执行的参数,就像
eval()
所做的那样。这 该工具旨在发现以下漏洞:

setTimeout('alert(' + document.location.hash.split('#')[1] + ')', 0);
但在您的情况下,没有用户提供的、未经过滤的输入
setTimeout()
函数,因此看起来很安全。给你留下 从链接的线程中得出了一个很好的结论:

我的建议是停止运行HP fortify reports。 或者支付五千美元,或者其他任何美元去他们的课堂,这样你就可以真正理解他们的胡言乱语


回答是。

我真的看不出如何利用这一点来注入任意代码,因为
location.href
是由您的服务器生成的(除非URL的某些部分来自任意用户输入)。但是,您的代码可以简化为
location.href=“logout.jsp”
,这与此相同。@Derek朕會功夫 在这种情况下,我也看不出注射是如何发生的。但是有人可以在URL中的
#
之后推送JS,如果处理不当,可能会产生问题。因此,该工具每次看到
window.location.href
被操纵时可能都会报告误报。您的Javascript代码是直接驻留在HTML页面还是单独的js文件中?@Derek朕會功夫 我不明白如何将它简化为location.href='logout.jsp'工作。请原谅我的知识太少了。@NisargShah那么我该怎么办呢?我可以向上级请示吗?