【发布时间】:2015-10-01 11:14:23
【问题描述】:
我有一个使用 Spring Security 的 Grails 应用程序。
这个应用程序基本上是一个内容管理系统,所以它是一个 CRUD。
我的网址访问基本格式如下:
/$controller/$action/$id
这是遇到问题的地方。这发生在控制器中,例如,为了更改用户,我有以下 URL:
/user/update/1
在控制器中我有以下代码:
def update(Long id) {
def user = User.get(id);
[user: user]
}
这就是问题所在。如果用户直接更改(id)而不检查请求中的用户id是否正确,任何人都可以浏览我系统的用户。现在我有一个大问题。
我认为的解决方案是为每个注册系统创建一个唯一的哈希,这会妨碍用户理解,例如,ID 1 具有哈希 123aabbCCDD。
但是我在系统中有很多寄存器和很多域,我不知道这是否是最好的解决方案。
我需要帮助知道,例如,使用spring security,我可以做这种事情。
我试图找到问题的解决方案,但我不确定要搜索什么词,所以如果已经有像我这样的问题,请将链接放在 cmets 中。
谢谢。
【问题讨论】:
-
您的问题非常广泛,但是“检查请求中的用户 ID 是否正确”是您的关键。什么定义将定义你如何解决这个问题。它可以是一个简单的过滤器来检查参数,也可以是像 Spring Security ACL 这样复杂的东西。这完全取决于您的需求。
-
谢谢 Joshua,我不知道 ACL 存在。我现在正在阅读这方面的内容。对不起,如果问题相当广泛,但我不知道如何更具体。