修复 Javascript 中的反射 XSS 问题。 CheckMarx
Fixing Reflected XSS issue in Javascript. CheckMarx
我试图使用 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 参数来自用户,请使用 Regex 或类似的东西来解析域。它甚至可以只是确保它以正确的协议和域开头这样简单的事情。
我相信 Checkmarx 在流程中首先将 url 变量视为任意变量,这就是为什么它将其视为客户端 DOM Open Redirect 漏洞。如果您不需要它是任意的,您可以尝试在 url 前加上一个硬编码值。
if(isNaN($rootScope.selectedContext.defaultAppPageId) || isNaN($rootScope.defaultHierarchyId)) {
return
}
var redirectUrl = "https://whosebug.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");
希望对您有所帮助!
我试图使用 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 参数来自用户,请使用 Regex 或类似的东西来解析域。它甚至可以只是确保它以正确的协议和域开头这样简单的事情。
我相信 Checkmarx 在流程中首先将 url 变量视为任意变量,这就是为什么它将其视为客户端 DOM Open Redirect 漏洞。如果您不需要它是任意的,您可以尝试在 url 前加上一个硬编码值。
if(isNaN($rootScope.selectedContext.defaultAppPageId) || isNaN($rootScope.defaultHierarchyId)) {
return
}
var redirectUrl = "https://whosebug.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");
希望对您有所帮助!