修复 Javascript 中的反射 XSS 问题.检查马克思



我试图使用 CheckMarx 验证我的代码,但遇到了几个我无法找到修复程序的漏洞。以下是引发漏洞的代码行。

window.location.href = url + "?"+"appPageId="+  
$rootScope.selectedContext.defaultAppPageId + "&hierarchyId="+ 
$rootScope.defaultHierarchyId

我尝试使用以下编码修复它

var redirectUrl = url + "?"+"appPageId="+  
$rootScope.selectedContext.defaultAppPageId + "&hierarchyId="+ 
$rootScope.defaultHierarchyId
window.location.href = encodeURI(redirectUrl)

但我仍然遇到同样的问题。是否有修复此客户端DOM开放重定向漏洞的方法?

另外,我在以下行遇到反射的XSS问题

res.send("The Context
"+req.params.contextName+" has restricted access. Please request 
access to this page");

可能是因为我正在使用res.send。我想这也将按照与上述问题相同的思路进行修复。

任何关于相同的帮助将不胜感激。

确保清理从用户那里获得的任何输入,包括从请求中获取任何参数。您可以找到许多消毒模块或中间件可以为您执行此操作,只需尝试快速的Google搜索即可。

至于开放重定向,如果 url 参数来自用户,请使用正则表达式或喜欢的东西来解析域。它甚至可以只是像确保它从正确的协议和域开始一样简单。

我相信Checkmarx首先将流中的url变量视为任意变量,这就是为什么它将其视为客户端DOM开放重定向漏洞的原因。如果不需要任意值,可以尝试在 url 前面加上硬编码值。

if(isNaN($rootScope.selectedContext.defaultAppPageId) || isNaN($rootScope.defaultHierarchyId)) {    
return
} 
var redirectUrl = "https://stackoverflow.com?" + "appPageId=" +  
$rootScope.selectedContext.defaultAppPageId + "&hierarchyId="+ 
$rootScope.defaultHierarchyId
window.location.href = encodeURI(redirectUrl)

对于XSS漏洞,它很可能被视为误报,因为Angular清理并转义了不受信任的值。但是,您不能总是信任视图引擎来完成其工作,因此,如果您真的想要显式修复,则可能需要使用html编码库(找到一个体面的,这只是一个例子(:

var htmlencode = require('htmlencode');
res.send("The Context"+ htmlencode.htmlEncode(req.params.contextName) + " has restricted access. Please request access to this page");

希望这有帮助!

相关内容

  • 没有找到相关文章

最新更新