C# SQL连接字符串安全性
我们有一个内部asp.net网站,运行在具有Windows安全性的IIS上。根据我的理解(和观察),这意味着每个线程都使用连接到网站的用户的凭据运行 该网站连接到SQL Server 2014数据库。我们使用SQL Server用户名和密码进行连接。查看一下,我发现不建议使用SQL Server身份验证 SQL Server帐户登录的密码不推荐使用。为了保持高级别的安全性,我们强烈建议您改用Integrated security或Trusted_Connection关键字。SqlCredential是为使用SQL Server身份验证的连接指定凭据的更安全的方法 由于删除网站的Windows安全性不是一个选项,因此我看到遵循MSDN建议的唯一选项是:C# SQL连接字符串安全性,c#,asp.net,sql-server,security,C#,Asp.net,Sql Server,Security,我们有一个内部asp.net网站,运行在具有Windows安全性的IIS上。根据我的理解(和观察),这意味着每个线程都使用连接到网站的用户的凭据运行 该网站连接到SQL Server 2014数据库。我们使用SQL Server用户名和密码进行连接。查看一下,我发现不建议使用SQL Server身份验证 SQL Server帐户登录的密码不推荐使用。为了保持高级别的安全性,我们强烈建议您改用Integrated security或Trusted_Connection关键字。SqlCredenti
- 使用标准质询响应协议(例如用户名/密码验证)李>
- 使用集成的安全性、AD/kerberos身份验证李>
- 在所有情况下,您都可以选择TLS/SSL加密
- 如果您执行集成安全性,它必须检查Active Directory中的每个连接。对于一些用户来说,这可能很好,但对于很多用户来说,我不喜欢这样
- SQL Azure不支持集成安全性,只要他们在线有此评论。如果真的很不安全,那就没有任何意义了
- 主要优点是,您不必在web.config中输入用户名和密码。再说一次,我不会以任何方式将SQL server直接暴露在internet上,如果一个恶意的人可以访问您的web服务器,他可以以任何方式(直接或间接)对您的数据库做很多令人讨厌的事情
因此,长话短说,我不想麻烦它,只需坚持用户名/密码身份验证。不。这取决于web应用程序配置,但它很可能作为应用程序池凭据连接到SQL server。让windows凭据一直传递到SQL Server实际上是一个相当具有挑战性的过程。。。这是您的选项4,这是许多web应用程序所做的。对不起@Nick.McDermaid,您是说许多使用Windows安全性运行的web应用程序(即System.Threading.Thread.CurrentPrincipal=查看站点的用户)每次连接到SQL时都会模拟另一个普通用户,这会增加开销吗?你能举例说明这是一种最佳实践吗?我不相信我们的web代码使用了这段特定的代码,但我没有检查的权限。我的观察是,到数据库的连接位于windows用户的应用程序池下。我们的web应用程序在windows安全下运行,但对我们来说,这意味着1。我们使用windows身份验证SSO在客户端识别用户,以及2。我们在数据库连接字符串中使用Windows身份验证。我认为最好的做法是:1。数据库连接字符串中任何位置都没有登录/pwd(即使用windows身份验证);2.不鼓励使用SQL登录,因为它们是“匿名的”-一旦您发出SQL登录/pwd组合,您就无法控制谁使用它(除非您定期更改密码)。Windows帐户拥有更多的“所有权”。这不是联合国