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/