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 应用程序并使用请求映射来保护对您的资源的访问,请通过向控制器和操作添加 [点] 来检查它们是否受到安全保护
我们已经使用请求映射实现了对控制器和操作的访问。 假设 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 应用程序并使用请求映射来保护对您的资源的访问,请通过向控制器和操作添加 [点] 来检查它们是否受到安全保护