在 Java 中验证字符串以避免路径遍历

发布于 2025-01-09 05:22:25 字数 457 浏览 1 评论 0原文

我有一个用户可以上传文件的系统。如果文件名包含“../”等敏感字符,我想抛出异常(以避免路径遍历漏洞:“file/../../file.txt”)。
我有代码 String originalFilename = multipartFile.getOriginalFilename();
有一个选项可以使用 StringUtils.cleanPath(originalFilename) ,但这并不完全是我所需要的(我想验证文件,而不是对其进行规范化)。
我看到的唯一选择是将规范化文件名(StringUtils.cleanPath(...) 方法的结果)与原始字符串进行比较,但我想知道是否有更简单的方法。例如:StringUtils.isPathValid(originalFilename)
此外,我更愿意使用已经开发的(开源)且常用的方法,而不是使用正则表达式创建我自己的解决方案。

I have a system where user can upload file. I want to throw an exception in case the filename is contains sensitive characters like "../", etc. (to avoid Path Traversal vulnerability: "file/../../file.txt").
I have the code String originalFilename = multipartFile.getOriginalFilename();
There's an option to use StringUtils.cleanPath(originalFilename) but it's not exactly what I need (I want to validate the file, not to normalize it).
The only option I see is to compare the normalized filename (the result of the StringUtils.cleanPath(...) method) with the original String, but I'd like to know if there's something easier. For example something like: StringUtils.isPathValid(originalFilename).
In addition, I'd prefer to use a method that is already developed (open source) and commonly used instead of creating my own solution with regex.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文