Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET集成身份验证的安全问题_Asp.net_Sql Server_Security_Iis 7 - Fatal编程技术网

ASP.NET集成身份验证的安全问题

ASP.NET集成身份验证的安全问题,asp.net,sql-server,security,iis-7,Asp.net,Sql Server,Security,Iis 7,我们目前使用连接字符串来验证数据库凭据。由于增长和法规遵从性,开发人员不再被允许“查看”我们网站使用的数据库凭据。解决这个问题的方法是使用集成身份验证。我们计划为每个应用程序池设置一个用户,然后允许该用户访问数据库 我的问题是:这种方法是否存在安全问题?就从连接字符串中删除DB凭据而言,有没有更好(更简单或更容易)的方法可以/应该采取?如果您的连接字符串存储在web.config文件中,您可以创建一个开发人员看不到的该文件的单独生产版本。这比使用应用程序池的集成身份验证更容易测试和设置 不过有一

我们目前使用连接字符串来验证数据库凭据。由于增长和法规遵从性,开发人员不再被允许“查看”我们网站使用的数据库凭据。解决这个问题的方法是使用集成身份验证。我们计划为每个应用程序池设置一个用户,然后允许该用户访问数据库


我的问题是:这种方法是否存在安全问题?就从连接字符串中删除DB凭据而言,有没有更好(更简单或更容易)的方法可以/应该采取?

如果您的连接字符串存储在
web.config
文件中,您可以创建一个开发人员看不到的该文件的单独生产版本。这比使用应用程序池的集成身份验证更容易测试和设置


不过有一点要警告:如果你对开发人员的限制太多,就会减慢他们的变更速度。由于世界其他地方确实在不断移动,这通常会导致应用程序成为一个死气沉沉的遗留包。如果您计划增长、改进或扩展,这是很危险的。

如果您的连接字符串存储在
web.config
文件中,您可以创建一个开发人员看不到的该文件的单独生产版本。这比使用应用程序池的集成身份验证更容易测试和设置


不过有一点要警告:如果你对开发人员的限制太多,就会减慢他们的变更速度。由于世界其他地方确实在不断移动,这通常会导致应用程序成为一个死气沉沉的遗留包。这是危险的,如果你打算成长,提高或扩展。

< p>使用池的身份可以很复杂的设置,考虑问题。
一个更好的选择是使用加密。

应用程序池的身份设置可能相当复杂,考虑问题。
更好的选择是使用加密。

如果您需要保护和审核对生产数据库的访问,则Windows身份验证比Sql身份验证更好,原因有很多:

  • 您可以通过NT组和权限精确控制谁可以访问数据库,这意味着您知道谁可以访问数据库。sql身份验证的访问池仅受知道密码的人的限制。考虑到n个知道密码的人,跟踪在某个时间点谁做了什么更为棘手(但并非不可能)

  • 只有系统管理员需要知道nt标识的密码才能访问数据库;事实上,只有知道用户名,才能完成大部分配置

  • 与SQL Server登录相比,可以在域级别更轻松地跟踪登录和访问

  • 它不会给你的是:

  • 能够确保开发人员看不到生产数据——无论谁编写应用程序,都可以轻松地包含一些诊断例程来选择数据

  • 确保生产数据只保留在生产中—任何对生产数据库进行备份(比如将其恢复到UAT环境中进行测试)的人都可以轻松地公开生产数据

  • 这种方法的问题已经在其他职位上讨论过了;特别是,对于ASP.NET应用程序,您必须考虑是否要使用模拟/委派(WebServer可以充当NT用户访问它)或可信用户模型(在其中配置固定身份来访问某些资源)。p>
    您使用的IIS版本使这一点更加复杂。

    如果您需要保护和审核对生产数据库的访问,则Windows身份验证比Sql身份验证更好,原因如下:

  • 您可以通过NT组和权限精确控制谁可以访问数据库,这意味着您知道谁可以访问数据库。sql身份验证的访问池仅受知道密码的人的限制。考虑到n个知道密码的人,跟踪在某个时间点谁做了什么更为棘手(但并非不可能)

  • 只有系统管理员需要知道nt标识的密码才能访问数据库;事实上,只有知道用户名,才能完成大部分配置

  • 与SQL Server登录相比,可以在域级别更轻松地跟踪登录和访问

  • 它不会给你的是:

  • 能够确保开发人员看不到生产数据——无论谁编写应用程序,都可以轻松地包含一些诊断例程来选择数据

  • 确保生产数据只保留在生产中—任何对生产数据库进行备份(比如将其恢复到UAT环境中进行测试)的人都可以轻松地公开生产数据

  • 这种方法的问题已经在其他职位上讨论过了;特别是,对于ASP.NET应用程序,您必须考虑是否要使用模拟/委派(WebServer可以充当NT用户访问它)或可信用户模型(在其中配置固定身份来访问某些资源)。p>
    您正在使用的IIS版本使这一点更加复杂。

    在word Sarbox中,我们别无选择,只能限制开发人员的访问?这将如何迫使您限制开发人员而不是系统管理员访问?它强制分离关注点,开发人员不能对数据库进行管理访问,也不能部署自己的代码。至少根据安永会计师事务所的说法,这是一件好事,也是一件坏事——正如安多玛指出的,它会使发布周期变慢,阻碍开发人员访问生产系统会使解决问题和部署变得更加困难。另一方面,健壮的部署实践和更好的诊断也是一件好事。这要视情况而定,但如果你想要SOX,那么这种职责分离是很常见的