Grails-Spring 安全漏洞:URL 用 [dot] 绕过

Grails-Spring Security loop hole: URL bypassing with [dot]

我们已经使用请求映射实现了对控制器和操作的访问。 假设 URL 喜欢 www.example.com/car/list 访问 ROLE_ADMIN。 但是如果我们像 www.example.com/adsf.car/list

那样尝试 URL,这个资源能够绕过 spring 安全

requestMap 看起来像这样:/car/** -> ROLE_ADMIN

如何防止像上面例子中的URL绕过sprint安全检查?

我尝试将请求映射更改为 /car/* -> ROLE_ADMIN,但是我们阻碍了这样的链接,我们无法更新所有链接的模式.

我们找到的一个解决方案是在 URL 映射中添加约束。请求中只允许字母、数字和'_'、'/' url.

没有以下限制,任何人都可以通过向控制器或操作添加 [dot] 来绕过受 spring 安全请求映射保护的 URL。

"/$controller/$action?"{
    constraints {
        controller(matches:/[A-Za-z0-9\-_]*/)
        action(matches:/[A-Za-z0-9\-_]*/)
    }
 }

注意:如果您正在使用 Spring 应用程序并使用请求映射来保护对您的资源的访问,请通过向控制器和操作添加 [点] 来检查它们是否受到安全保护