java - 如何修复 checkmarx 信任边界违规
问题描述
我从用户输入请求中保留一个值。Checkmarx抱怨存在Trust Boundary Violation。
从元素请求中获取用户输入。此元素的值在未经过适当清理或验证的情况下流经代码,最终存储在服务器端 Session 对象中
我也在网上找到了这个帖子。接受的答案是验证它。
好的,验证和清理
private String getValidSearchPath(String searchPath) {
if (!searchPath.matches("^[0-9a-zA-Z]+$")) { //using regex to do validation
throw new RuntimeException("Unacceptable jsonPath " + searchPath);
}
if (StringUtils.isBlank(searchPath)) {
return "";
}
return searchPath.substring(0,0); // I intentionally put 0,0 here, which returns ""
}
...
//pseudo code
String searchPath = getValidSearchPath(request.get(...));
persistSearchPath(searchPath);
然后我再次运行Checkmarx。
你猜怎么着?我仍然得到信任边界违规。有人可以告诉我如何解决吗?我已经返回空字符串,Checkmarx仍然抱怨我不正确地使用用户输入的值。
解决方案
Checkmarx 在代码中搜索一组验证和函数,其中一个是ESAPI 库。改用 ESAPI.getValidInput 方法进行验证:
Validator.SafeString=^[0-9a-zA-Z]+$;
ESAPI.validator().getValidInput("Search Path", searchPath , "SafeString", maxLength, allowNull);
推荐阅读
- google-maps - 如何在颤动的谷歌地图上添加动态倍数标记?
- xamarin.forms - 选项卡式页面标题视图中的搜索栏 -xamarin 表单
- node.js - 使用来自 post 请求的 nodejs 变量
- java - 泛型类型问题的 JAVA 函数重载
- ibm-watson - 无法在模型中添加 transaction_id 列以在 watson openscale 上使用
- python - 查找将数据导出到 csv 的 URL
- python - 在 macOS 上安装 psycopg2 失败
- php - Laravel Yajra 上的分页 分页不起作用
- pygame - Pip 和 Python 版本未加载
- python - 以 2 个十进制数作为乘积结果的 Python 乘法