Web应用程序,用户和权限(以及安全性)

时间:2013-04-12 23:07:38

标签: database security web-applications permissions

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

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

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

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

为什么不采用这种方法?这只是为了方便起见,或者是在安全性和易编码之间寻求正确的权衡问题?或者我可能只是混乱并混合了两个不同的东西(数据库和应用程序用户),它们适用于两个不同的范围。

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

谢谢!

1 个答案:

答案 0 :(得分:3)

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

最佳方法(从安全角度和可行性角度来看)是为DB提供两个用户帐户。一个具有只读权限,另一个具有读/写权限。 仅在需要添加用户或更改密码时才使用读/写凭据。使用这些凭据时不要愚蠢。永远不要让它们以客户端代码或注释的形式传达给客户端(我在HTML注释中看到了DB凭据*叹气*)。

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