网络应用程序,用户和权限(以及安全)

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

3

这种方法听起来更加安全,但是实现起来非常困难,当你考虑扩展到一百万个及以上的用户时,问题会更多。

从安全和可行性角度来看,最好的方法是为数据库设置两个用户帐户。一个只有读取权限,另一个具有读写权限。 只有在需要添加用户或更改密码时才使用读/写凭据。 不要在这些凭证方面犯傻。永远不要让它们以客户端代码或注释的形式出现在客户端。 (我曾经在HTML注释中看到过DB凭证 *叹气*)。

如果您的应用程序/用户基础真的很小并且始终如此,那么也许您可以为每个用户帐户分配一个沙盒化的DB帐户。 这将更加安全。 但是,我永远不会假设您将始终拥有一个小型用户群。 您永远不知道未来会带来什么,而重新实现这一点将是糟糕的


谢谢,我猜到了类似的东西,你证实了我的想法 ;) - user1527576

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接