node.js - 如何验证或清理从 Node js 中的获取 URL 收到的用户输入
问题描述
我正在尝试对我的代码进行 checkmarx 扫描。但是我遇到了这个错误:这个元素的值然后在没有经过适当的清理或验证的情况下流过代码,并最终在方法中显示给用户。然后在第 145 行........这可能会启用交叉站点脚本攻击。
我正在使用 express js,其中有一种方法可以接受来自服务器的请求和响应。
函数方法1(请求,响应){
常量参数 = request.query ; ------> 这一行给出了一个漏洞
}
请帮我尽快解决这个问题。已经搜索了解决方案,但只有与 java 或 .net 相关的解决方案。我需要 node/express js 的解决方案。
提前致谢
解决方案
request.query
您必须通过单独创建和处理每个变量来验证您使用的每个参数,而无需直接访问。
例如,您要检查 customerId 是否以 a 开头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来负责验证。
推荐阅读
- snowflake-cloud-data-platform - 在雪花中成功创建了一个任务,但是运行“显示任务”时它没有显示出来
- python - 尝试从 Google 下载图像时不断收到此错误消息 --> selenium.common.exceptions.NoSuchElementException
- jquery - 如何使用 jquery 重复 x 行,每行 3 列?
- angularjs - 如何通过 ng-init 或 data-ng-init 设置默认值?
- sharepoint - 如何使用 UiPath 中的 CAML 查询更新 Sharepoint 项目的列值?
- eclipse - 在 ABAP 存储库中没有提交和检索 SAP UI5 应用程序的选项
- c++ - 循环条件适用于原始迭代器,但不适用于迭代器解引用
- spring - Spring Boot Rest 控制器不接受多部分表单数据
- javascript - 确定浏览器的屏幕宽度是多少
- javascript - jsp - javascript - 单击事件对于循环 id 元素以更新数据库中的记录