任何有脑细胞的人都知道,使用非 root/dbo/etc 的用户会大大提高安全性以及 SQL 注入攻击的有效性。我想知道将这个想法更进一步是否是一个好主意。
基本思想很简单。select
对于类似访客的操作(查看),请在数据库上使用仅对事物具有权限的“访客”用户。对于类似用户的操作(添加/编辑),有一个“用户”用户,它只有运行insert
和update
查询的权限。除此之外,还包括具有类似“管理员”操作的第三个用户,以获得delete
能力。
注意:这已被简化为仅涵盖基本的 CRUD 能力
优点:
- 理论上通过权限限制增加了安全性。
- 强制 CMS 确保安全以防止模拟/重放攻击。
缺点:
- CMS 中的复杂代码(我正在考虑使用此功能)。
- 强制 CMS 确保安全(这并不总是可以实现)
我的问题是:
以这种方式分离角色和权限是否有任何安全好处,如果是这样,这样做的好处是否证明更复杂的代码可以根据操作强制用户切换?
例如,我们只是说检查我是否切换用户只是一个 if 语句,如果该语句失败,那么用户无论如何都不允许执行任何操作,因此切换不会发生第一名。