0

对不起,如果这是一个基本问题,但我刚刚开始考虑我是否一直在正确地做这件事。通常,当用户尝试更新数据库时,我只需使用他/她的用户名作为用户表中的键,然后基于此进行所有操作。然而,我刚刚意识到狡猾的用户可能能够使用另一个用户名提交查询,从而绕过这种弱形式的强制执行权利。所以我的问题实际上是如何防止用户潜在地对不同用户 ID 下的数据库提交破坏性操作?

4

1 回答 1

2

您应该将当前用户的 ID 存储在不容易被操纵的会话中。

我通常通过 User 对象上的关系来引用对象:

    current_user.fragile_records.find(params[:id]).destroy

这是进行所有权测试的一种易读且简单的方法。

http://guides.rubyonrails.org/security.html是关于这个主题的令人惊讶的好读物。

有很多现成的解决方案可用于维护用户身份(身份验证)并确保用户有权限在 Rails中执行操作(授权) 。

于 2011-10-30T15:11:57.043 回答