首页 > 解决方案 > 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);

标签: javaregexvalidationpathesapi

解决方案


@C.Williams:我花了大约 30 分钟在编辑器中写出详细的回复,结果意外地激活了我的编辑器窗口。我太愚蠢了,因为我没有保存它以再次编写它,特别是因为我只完成了大约 75%。

但是,如果您想给我发电子邮件,我可以安排通过 Google Hangouts 或 Signal 与您交谈,告诉您您的问题是什么以及如何解决它。但它冗长而复杂,部分与 ESAPI 团队刚刚修复但尚未正式发布的错误有关。但我不会再花 45 分钟或更长时间来回复任何书面文字。我的电子邮件地址应该很容易找到。只需谷歌我的名字和 ESAPI。我是 ESAPI 的项目联合负责人之一。

-凯文墙


推荐阅读