首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET集成身份验证的安全问题

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

Stack Overflow用户
提问于 2012-03-04 21:07:33
回答 3查看 408关注 0票数 1

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

我的问题是:这种方法有什么安全问题吗?至于从连接字符串中删除DB凭据,有没有更好(更简单或更简单)的方法我们应该/可以采取呢?

EN

回答 3

Stack Overflow用户

发布于 2012-03-05 00:40:51

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

  1. 您可以通过NT组和权限准确地控制谁可以访问数据库,这意味着您知道谁专门有权访问数据库。使用sql身份验证的访问池仅受知道密码的人员的限制。给定n个知道密码的人,跟踪谁在某个时间点做了什么就会更加棘手(但并非不可能)。
  2. 只有您的系统管理员才需要知道具有数据库访问权限的nt身份的密码;事实上,只需知道username
  3. Logins就可以完成大部分配置,而且在域级别跟踪访问要比使用SQL Server登录更容易。

它不会给你的是:

  1. 确保开发人员看不到生产数据的能力-无论谁编写应用程序,都可以轻松地包括一些诊断例程来选择数据
  2. 确保生产数据只留在生产中-任何对生产数据库进行备份(比如将其恢复到UAT环境进行测试)的人都可以轻松地公开生产数据。

这种方法的问题已经在其他文章中讨论过;特别是对于ASP.Net应用程序,您必须考虑是否要使用模拟/委派(where服务器可以充当访问它的NT用户)或受信任的用户模型(在该模型中,您配置固定的身份来访问某些资源)。

由于所使用的IIS版本,这一点更加复杂。

票数 1
EN

Stack Overflow用户

发布于 2012-03-04 21:39:07

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

不过,有一句话要警告:如果你对开发人员限制太多,就会减慢他们的变化速度。由于世界上的其他地方确实在不断变化,这通常会以应用程序成为一个死亡的遗留包而告终。如果你打算成长、改进或扩展,这是很危险的。

票数 0
EN

Stack Overflow用户

发布于 2012-03-04 21:40:33

应用程序池标识的使用设置起来相当复杂,考虑到trust and delegation问题。一个更好的选择是使用加密的securing connection strings

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9555098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档