对于 Web 应用程序,使用集成安全性 (SSPI) 访问 SQL Server 是否更好?

Not*_*tMe 14 security web-applications sql-server

将 Web 应用程序 (.net) 部署到生产环境时,使用集成安全性更好还是更重要?

在我看来,如果黑客破坏了 Web 服务器,这并不重要,因为他们可以轻松地冒充机器。

想法?

Rem*_*anu 9

我认为使用 SQL 身份验证只有两个正当理由:

  1. 您是从域外部连接的,因此集成了身份验证。
  2. 您正在运行 TPC-C 基准测试,并且每个周期都很重要。SQL 身份验证要快一点。

对于您提出的方案(Web 服务器主机完全受到威胁),没有什么可以保护您。黑客至少可以在 DB 服务器上做 Web 服务器可以做的所有事情。我想说的是,纵深防御可以教你在这种情况下最大限度地减少损失:将您的 Web 服务器使用的帐户的数据库权限减少到绝对最低要求,仅此而已。其次,确保如果 Web 服务器主机受到威胁,它不能用于提升高于 Web 服务器帐户的权限(即 WWW 主机上没有其他服务使用比 WWW 帐户更高的 DB 权限凭据)。这些是基本的安全原则,与使用的身份验证方案无关。

虽然 sql auth 与 windows auth 在您的场景中都没有明显优势,但还有其他问题需要考虑:

  1. 集中策略执行:您可以在一处设置密码策略,包括密码有效期和到期时间、帐户终止等。
  2. 控制模拟和信任委托。一旦在信任委托链中使用了 sql auth,所有赌注都将取消,因为这不是真正的“委托”,因此不再受您的政策施加的限制
  3. 审计:你的 LSA 甚至看不到 sql auth,所以你的整个审计基础设施都被简单地绕过了。您需要显式添加 SQL 生成的关于 sql auth 事件的记录,但由于这些事件在事件日志中具有不同的来源、提供者和架构,因此混合使用了苹果和橙子

最后一个注意事项:TDS 协议通过流量以明文形式公开 sql auth 密码,但这通常可以通过请求对流量进行 SSL 加密来缓解。

那么为什么你仍然看到 sql auth WWW 主机在 web.config 中以明文方式存储密码?那些是糟糕的开发人员/管理员,不要成为其中之一。

msdn.microsoft.com/en-us/library/aa378326(VS.85).aspx

technet.microsoft.com/en-us/library/ms189067.aspx


Joe*_*sky 7

如果您不使用 SSPI,您会将用户名和密码硬编码到源文件中。

如果您将用户名和密码硬编码到源文件中,您的所有员工都可以访问它。

这是相对不安全的。心怀不满的前雇员可能会恶意使用这些信息。访问者可能会在某处的屏幕上看到代码。或者源代码可能会意外泄露。

SSPI 的优点是密码永远不会以明文形式存储在任何地方。

  • 心怀不满的 EX 员工将无法再访问,因为他/她的密码将被禁用 (2认同)

Bre*_*zar 7

到目前为止,其他答案都很好,但我会提出另一个答案:管理。

迟早,您可能最终会拥有多个 SQL Server。管理应用程序和多个 SQL Server 之间的 SQL 身份验证会有点痛苦,尤其是在遇到安全问题时。如果您更改一次 Windows 身份验证密码,它会立即在您的所有服务器上更改。如果您需要轮换 SQL 身份验证密码,那就更麻烦了 - 以至于您可能根本不会这样做。这是一个安全风险。