我正在尝试对我的代码执行checkmarx扫描。 但是我面临这个错误:这个元素的值然后流经代码而没有经过适当的消毒或验证,并最终在方法中显示给用户。然后在第145行........这可能使得Site-Scripting攻击。
我正在使用快速js,其中有一个方法接受来自服务器的请求和响应。
function method1(request,response){
const params = request.query ; ------>这一行给出了一个漏洞
}
请帮我解决这个问题ASAP.Have搜索了解决方案但是只有与java或.net相关的solns ..我需要node / express js的解决方案。
提前致谢
答案 0 :(得分:1)
您必须通过分别创建和处理每个变量来验证您使用的每个参数,而无需直接访问request.query
。
例如,您要检查customerId是否以c
开头,contactNumber是否为数字:
const customerId = request.query.customerId;
if (!customerId || /^c\d+/.test(customerId)) {
return replyWrongParameters(response);
}
const contactNumber = parseInt(request.query.contactNumber);
if (isNaN(contactNumber)) {
return replyWrongParameters(response);
}
如果您想使用外部库,可能需要使用负责验证的https://www.npmjs.com/package/express-validation。
答案 1 :(得分:0)
来自OWASP的Cross-site Scripting (XSS)页面:
跨站点脚本(XSS)攻击是一种注入类型,其中恶意脚本被注入到其他良性和可信赖的网站中。当攻击者使用Web应用程序将恶意代码(通常以浏览器端脚本的形式)发送给不同的最终用户时,就会发生XSS攻击。允许这些攻击成功的缺陷非常普遍,并且发生在Web应用程序在其生成的输出中使用来自用户的输入而无需验证或编码它的任何地方。
要深入了解如何避免跨站点脚本漏洞,建议您浏览OWASP的XSS (Cross Site Scripting) Prevention Cheat Sheet页面。
针对您的特定node.js问题,您可以使用专用的清理程序,例如bleach。
祝你好运。