我正在设计一个网络应用程序,这是我第一个严肃的网络应用程序。它将有一些具有不同权限(RBAC/ACL) 的用户。正如你所想象的那样, 我有点担心权限管理和安全性问题。
这就是为什么我想知道,在Web应用程序中,用户通常存储在数据库中,而不是作为数据库用户(如Joomla!)的原因。我感觉这是一种不安全的认证方法:数据库连接总是使用具有完整或非常高的特权的db用户完成,所以可以管理什么可以做和不能做的内容由Web应用程序通过编写RBAC/ACL授权层来管理(所以我有一堆表在数据库中保存了用户、特权级别等)。
从概念上讲,我认为更好的方法是使用更多的数据库用户(至少每个特权级别一个,或者最好每个Web应用程序的用户一个),以保护数据库中的数据(如果我有安全漏洞并且攻击者找到了数据库连接信息,则他的权限将受到被黑客攻击的用户账户的权限的限制)。
我看到这种方法实现起来相当笨拙,但另一方面它更安全。
为什么不使用这种方法?只是为了方便,还是为了寻求安全性和编码易用性之间的正确平衡?或者我只是搞糊涂了,混淆了两个不同的事情(数据库和应用程序用户),它们面向的是两个不同的范围。
如果问题很傻,请原谅,但在学习时你会了解数据库用户和权限,当你看到真正的软件时,你会发现事情被(表面上)以不同的方式完成。
谢谢!
这就是为什么我想知道,在Web应用程序中,用户通常存储在数据库中,而不是作为数据库用户(如Joomla!)的原因。我感觉这是一种不安全的认证方法:数据库连接总是使用具有完整或非常高的特权的db用户完成,所以可以管理什么可以做和不能做的内容由Web应用程序通过编写RBAC/ACL授权层来管理(所以我有一堆表在数据库中保存了用户、特权级别等)。
从概念上讲,我认为更好的方法是使用更多的数据库用户(至少每个特权级别一个,或者最好每个Web应用程序的用户一个),以保护数据库中的数据(如果我有安全漏洞并且攻击者找到了数据库连接信息,则他的权限将受到被黑客攻击的用户账户的权限的限制)。
我看到这种方法实现起来相当笨拙,但另一方面它更安全。
为什么不使用这种方法?只是为了方便,还是为了寻求安全性和编码易用性之间的正确平衡?或者我只是搞糊涂了,混淆了两个不同的事情(数据库和应用程序用户),它们面向的是两个不同的范围。
如果问题很傻,请原谅,但在学习时你会了解数据库用户和权限,当你看到真正的软件时,你会发现事情被(表面上)以不同的方式完成。
谢谢!