2010-08-16 59 views
0

我正在使用ASP.NET 4.0,C#和IIS7的Web应用程序。 Web应用程序是定义多个用户角色的内容管理系统,例如编辑器和管理员。这些用户和角色由asp.net成员资格框架管理,关联的数据库表使用aspnet_regsql集成到Web应用程序的数据库中。最后,Web应用程序在ApplicationPoolIdentity下运行。因此,Web应用程序在虚拟帐户“IIS AppPool \”下运行,它不与任何其他应用程序共享。ASP.NET/IIS7 - 保护对多个用户角色的SQL Server访问

该网站的设计使得用户帐户由管理员发布(没有公共注册页面),尽管此详细信息可能无关紧要。无论如何,管理员应该有权创建和删除用户并编辑站点上的任何内容。另一方面,编辑应该只能编辑网站的指定部分。最后,网站的匿名访问者应该只能查看内容,而不能编辑。

问题是:在SQL Server数据库中向IIS AppPool \虚拟帐户授予读写访问权限并为Web应用程序的底层业务逻辑中的不同用户角色提供功能会不安全?

我不这么认为,但由于数据完整性的必要性,我认为征求其他开发者的意见可能是一个好主意。

如果(且仅当)这会造成不可预见的安全风险,使用模拟,使用SQL身份验证将web.config文件中的多个连接字符串存储或在数据库本身中跟踪用户权限是否更好? ?

回答

2

的问题是:难道是不安全 就这样给读写 的MSSQL数据库的IIS应用程序池\ 虚拟帐户访问,并在 基本商业逻辑给功能 给不同的用户角色网络 应用程序?

这就是通常的做法,对于大多数商业案例来说就足够了。有在每个应用程序的不安全感,所以你必须尽你所能避免缓冲区溢出,脚本注入和SQL注入,擦洗你输入等

如果(且仅当)这样做造成的意外 安全风险,是否 更好的主意使用模拟, 存储多个连接字符串在 web.config文件与SQL 身份验证,或跟踪用户 权限在数据库本身?

如果您使用Windows身份验证,使用模拟并不少见,并且非常简单。这是一个令人头痛的行为,因为除了应用程序数据库以外,还必须通过数据库安全性添加用户。多个连接字符串可能是这些方法中扩展性最差和最有利的,更不用说它会影响繁忙网站的性能。