java - ESAPI 未通过文件验证
问题描述
我正在使用 ESAPI 来尝试验证 Windows 目录路径。出于某种原因,我的目录路径中名为 \14\ 的部分正在转换为 CRLF。我收到的错误如下,我没有正确理解什么?我觉得我的正则表达式应该可以工作。
WARN IntrusionDetector [SECURITY FAILURE Anonymous:null@unknown -> /project-test/IntrusionDetector] Invalid input: context=directoryPath, type(DirectoryName)=^[a-zA-Z0-9:/\\!@#$%^&{}\[\]()_+\-=,.~'` ]{1,255}$, input=C:\UsersTESTUS~1AppDataLocalTempTestCase8002TempWorkSpace, orig=C:\Users\TESTUS~1\AppData\Local\Temp\14\TestCase8002TempWorkSpace
如您所见,我正在使用正则表达式: ^[a-zA-Z0-9:/\!@#$%^&{}[]()_+-=,.~'` ]$
我的输入是: C:\Users\TESTUS~1\AppData\Local\Temp\14\TestCase8002TempWorkSpace
输出,在 ESAPI 进行规范化和验证后: C:\UsersTESTUS~1AppDataLocalTempTestCase8002TempWorkSpace
这是导致我收到错误的代码行;
String validatedSourcePath = ESAPI.validator().getValidInput("directoryUnzip", directory, "DirectoryName", 255, false);
File validFile = new File(validatedSourcePath);
解决方案
@C.Williams:我花了大约 30 分钟在编辑器中写出详细的回复,结果意外地激活了我的编辑器窗口。我太愚蠢了,因为我没有保存它以再次编写它,特别是因为我只完成了大约 75%。
但是,如果您想给我发电子邮件,我可以安排通过 Google Hangouts 或 Signal 与您交谈,告诉您您的问题是什么以及如何解决它。但它冗长而复杂,部分与 ESAPI 团队刚刚修复但尚未正式发布的错误有关。但我不会再花 45 分钟或更长时间来回复任何书面文字。我的电子邮件地址应该很容易找到。只需谷歌我的名字和 ESAPI。我是 ESAPI 的项目联合负责人之一。
-凯文墙
推荐阅读
- python - 解析数据框中的多个字典列以分隔列
- php - 在 Google Cloud Platform 中部署时,PHP API Endpoint 不返回任何 JSON 数据
- grails - Grails 4.0.1 - Spock 单元测试用例因空格而失败
- java - Android:如果在方法中调用 AsyncTask.execute(new Runnable()),则覆盖 onPostExecute()
- javascript - 如何从外部 js 文件访问 angular2+ 服务
- java - 如何使用pair在jooq更新查询中返回多列
- javascript - 如何清除常量对象中的间隔?
- c# - Aspnet Core 应用程序在生产环境中引发开发人员异常
- node.js - 前缀 -g' 未被识别为内部或外部命令
- oracle - DB:警告:执行完成但有警告(SQL 状态:99999 - 错误代码:17110)是什么意思?