首页 > 解决方案 > Grails-Spring Security 漏洞:使用 [dot] 绕过 URL

问题描述

我们已经使用 requestmap 实现了对 Controller 和操作的访问。假设像www.example.com/car/list这样的 URL访问 ROLE_ADMIN。但是如果我们尝试像www.example.com/adsf.car/list这样的 URL,这个资源能够绕过 Spring Security

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

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

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

标签: springgrailsspring-securityrequest-mapping

解决方案


我们发现的一种解决方案是在 URLMappings 中添加约束。在请求 url 中只允许字母、数字和 '_'、'/'。

如果没有以下限制,任何人都可以通过将 [dot] 添加到控制器或操作来绕过受 Spring Security requestMap 保护的 URL。

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

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


推荐阅读