【问题标题】:Web application, users and permissions (and security)Web 应用程序、用户和权限(以及安全性)
【发布时间】:2013-04-05 14:57:32
【问题描述】:

我正在设计一个 Web 应用程序,这是我的第一个严肃的 Web 应用程序。它会有一些具有不同权限的用户(RBAC/ACL)。可以想象,我有点担心权限管理和安全性

这就是为什么我想知道为什么在 Web 应用程序中,用户通常存储在数据库中,而不是数据库用户(例如 Joomla!)。我觉得这是一种不安全的身份验证方法:数据库连接总是使用对 db 具有完全或非常高权限的 db 用户完成,所以可以做什么和不可以做什么由 Web 应用程序通过编写 RBAC/ACL 授权来管理层(所以我在数据库中有一堆表,其中包含用户、权限级别等)。

从概念的角度来看,我认为更好的方法是使用更多的数据库用户(每个权限级别至少一个,或者每个 Web 应用程序的用户更好)以保护数据库中的数据(如果我有安全漏洞并且攻击者发现了数据库的连接信息,他的权限将受到被黑用户帐户的权限的限制)。

我发现这种方法实施起来相当笨拙,但另一方面它更安全。

为什么不使用这种方法?这只是为了方便起见,还是在安全性和易于编码之间寻求正确的权衡?或者,也许我只是把两个不同的东西(数据库和应用程序用户)混在一起,这意味着两个不同的范围。

对不起,如果这个问题很愚蠢,但是在学习时您会了解数据库用户和权限,当您看到真正的软件时(显然)以不同的方式完成事情。

谢谢!

【问题讨论】:

    标签: database security web-applications permissions


    【解决方案1】:

    这种方法听起来确实更安全,但它是实现的噩梦,当您开始考虑扩展到一百万以上的用户时更是如此:-O

    最好的方法(从安全角度和可行性角度来看)是为数据库设置两个用户帐户。一种具有只读权限,另一种具有读/写权限。 仅当您需要添加用户或更改密码时才使用读/写凭据。 不要对这些凭据感到愚蠢。永远不要让他们以客户端代码或 cmets 的形式进入客户端(我在 HTML cmets *sigh* 中看到过数据库凭据)。

    如果您的应用程序/用户群非常小并且一直如此,那么也许您可以为每个用户帐户分配一个沙盒数据库帐户。那会更安全。但是,我永远不会假设您的用户群总是很小。你永远不知道未来会带来什么,而且很糟糕必须重新实现它。

    【讨论】:

    • 谢谢你,我猜是这样的,你证实了我的想法;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 2011-04-09
    • 2011-07-29
    • 2011-07-04
    • 2015-01-09
    • 1970-01-01
    • 2013-03-20
    相关资源
    最近更新 更多