在 Java 中验证字符串以避免路径遍历
我有一个用户可以上传文件的系统。如果文件名包含“../”等敏感字符,我想抛出异常(以避免路径遍历漏洞:“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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论