java - request.getServletPath()返回的Servlet路径是否保证规范化?

标签 java security servlets

1) request.getServletPath() 是否可以返回任何路径,例如 /testfolder/../testfolder/file.txt,或者这个路径是否保证是 规范化,因此转换为类似于/testfolder/file.txt?

我之所以问,是想知道这条路径是否可以方便的用于访问控制。例如,当普通用户不应该能够访问以 /admin/ 开头的路径时,那么一些相对路径如 /images/../admin/secretinfo.txt 可用于规避此控件。

请注意:浏览器在联系服务器之前将任何路径转换为绝对的、规范化的路径,但假设发送相对路径的其他恶意客户端可用于攻击。

2) 另外,在执行这种简单的字符串验证访问控制时,我还应该考虑其他与 Servlet Path 相关的安全问题吗?

最佳答案

Servlet 规范对此没有明确规定。有一个 open issue这违反了 Servlet 规范。

规范强烈建议它已规范化,但对于与安全相关的应用程序,我不会依赖它,而是通过规范化过程运行它以确保安全。关于这个主题,我建议不要自己动手,建议您重新使用 Tomcat's normalization code 之类的。 .

关于java - request.getServletPath()返回的Servlet路径是否保证规范化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37017166/

相关文章:

java - 外部类访问包私有(private)方法

java - 基本 2D 寻路(无需图表)

java - 加密种子的最佳方法是什么?

Java 和 Tomcat org.json java.lang.ClassNotFoundException

java - java中列表值获取修改

java - 有没有比线性搜索更快的算法?

api - API网关如何通过内省(introspection)验证访问 token

security - OPENLDAP:密码策略重叠,如何分配给特定的OU

java - 使用 AbstractAnnotationConfigDispatcherServletInitializer 在 java servlet 中使用 @Autowire

java - 如何在jsp页面加载时调用servlet