spring - 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,但我们阻止了这样的链接,我们无法更新所有链接的模式。
解决方案
我们发现的一种解决方案是在 URLMappings 中添加约束。在请求 url 中只允许字母、数字和 '_'、'/'。
如果没有以下限制,任何人都可以通过将 [dot] 添加到控制器或操作来绕过受 Spring Security requestMap 保护的 URL。
"/$controller/$action?"{
constraints {
controller(matches:/[A-Za-z0-9\-_]*/)
action(matches:/[A-Za-z0-9\-_]*/)
}
}
注意:如果您使用 Spring 应用程序并使用请求映射来保护对资源的访问,则通过将 [dot] 添加到控制器和操作来检查它们是否受到安全保护
推荐阅读
- html - 如何创建并排显示的两个按钮菜单?
- oracle - 在 oracle 中查询以从一个表中获取多条记录并输入到另一个表中
- java - 计算文件名字符并限制文件大小以显示 Joptionpane
- javascript - 如何将标题设置为在完整日历中仅显示月份名称
- ios - Swift - ARKit WorldMap 占用多少数据
- python - 不清楚 If 语句的功能
- javascript - typescript/javascript:如何从特定目录导入所有 json
- python - 函数调用 Python 中缺少必需的潜在参数
- python - 如何在 Python 控制台中运行带有选项的 .py 文件?
- php - 当laravel中的key_names不同时如何检查两个数组的相等性