数据库与应用程序安全性设计

用户名

因此,我目前正在创建一个小型公共网站(例如,用户可以在其中登录并更改个人信息),但是我想知道数据库安全性实际上是针对这种类型的事物而设计的,所以几个问题。

例如,当一个互联网用户访问诸如stackoverflow之类的页面时(没有在该站点上登录),他登录了哪个数据库用户或角色以便能够查看所有已发布的问题?然后,当用户使用其帐户登录时,他在数据库中的角色是否发生变化(因为他拥有更多权限)?

如果将数据库设置为具有“用户”表和“权限”表,则可以确保用户只能访问自己的数据,至少在应用程序侧。但是,由于我假设每个公共用户都具有相同的“数据库登录名”或“角色”,因此如何确保数据仍在数据库端受保护?

我知道我的问题可能还不清楚,但请随时向我澄清。我真的不知道从哪里开始。

谢谢。

PS:我目前正在使用SQL Server

克里斯·迪弗(Chris Diver)

您几乎已经回答了自己的问题。

通常,您的网站将在某个用户帐户下运行,我们称其为“ IWEB”,无论用户是否登录到您的网站,该用户帐户对于访问您网站的每个人都是相同的。

IWEB将具有从数据库读取数据的权限。这就是匿名用户的工作方式。

在数据库中,您将有一个用户表,可能还有一个权限表。IWEB将被授予数据库创建新用户,更新用户的权限。可能会阻止删除用户。

您的应用程序将(尽管通过IWEB)使用这些表来控制谁有权访问您的应用程序以及谁可以更新什么。您的应用程序中的错误(例如SQL注入)可能允许恶意用户创建管理员帐户,更改其他用户密码等...

在某些情况下(例如,使用Windows身份验证),您可以通过登录站点的用户,将其转换为数据库用户并为其授予权限。但是,对于面向公众的网站,您不太可能这样做。

您可以做一些不直接访问表而是通过存储过程控制表的操作,从而拒绝对基础表的访问。参数之一是当前登录的用户,该用户然后可以控制数据库层的访问(防止用户更新另一个用户配置文件)。除非您的应用程序当然有错误,否则该错误可能使攻击者更改其当前登录的用户。

这完全取决于您的安全要求。不过,在主要方面,您将控制应用程序的访问。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章