我正在使用ASP.NET 4.0,C#和IIS7开发Web应用程序。 Web应用程序是一个内容管理系统,它定义了多个用户角色,例如编辑器和管理员。这些用户和角色由asp.net成员资格框架管理,相关的数据库表使用aspnet_regsql集成到Web应用程序的数据库中。最后,Web应用程序在ApplicationPoolIdentity下运行。因此,Web应用程序在虚拟帐户“IIS AppPool \”下运行,它不与任何其他应用程序共享。
该网站的设计使得管理员可以分发用户帐户(没有公开注册页面),但这个细节可能无关紧要。在任何情况下,管理员都应该有权创建和删除用户并编辑网站上的任何内容。另一方面,编辑应该能够仅编辑网站的指定部分。最后,该网站的匿名访问者应该只能查看内容,而无法进行编辑。
问题是:将SQL Server数据库中的读写访问权限授予IIS AppPool \ virtual帐户并为Web应用程序的基础业务逻辑中的不同用户角色提供功能是不安全的吗?
我不这么认为,但由于数据完整性的必要性,我认为寻求其他开发者的意见可能是一个好主意。
如果(并且仅当)这确实会带来无法预料的安全风险,那么使用模拟更好,使用SQL身份验证在web.config文件中存储多个连接字符串,还是跟踪数据库本身的用户权限?
答案 0 :(得分:2)
问题是:它会不安全吗? 只提供读写访问权限 MSSQL数据库到IIS AppPool \ 虚拟帐户并提供功能 到了不同的用户角色 网络的基础业务逻辑 应用
这是通常的方式,对于大多数商业案例来说,这已经足够了。每个应用程序都存在不安全因素,因此您必须尽最大努力避免缓冲区溢出,脚本注入和SQL注入,清理输入等。
如果(且仅当)这确实构成了 不可预见的安全风险,是不是 使用模仿更好的主意, 存储多个连接字符串 带有SQL的web.config文件 身份验证或跟踪用户 数据库本身的权限?
使用模拟并不罕见,如果您使用的是Windows身份验证,则非常容易。这是一个管理问题,因为除了应用程序数据库之外,还必须通过数据库安全性添加用户。多个连接字符串可能是最不可扩展且有利的方法,更不用说它会损害繁忙站点的性能。