我们将其中一个网站迁移到ASP.Net。我们不想使用集成安全性,它使用Windows帐户连接到SQL服务器(不会进入原因,它只是不可能)。我们创建了一个用户名和密码来连接到SQL Server,并希望使用该用户名和密码,但是,我们也不希望其他开发人员看到这些信息(很容易从web.config中读取)....我知道它可以加密,但它可以很容易地被开发人员解密 - 加密性能也会受到影响。
这个问题有解决办法吗?
答案 0 :(得分:2)
这是关于Encrypting Configuration Information in ASP.NET 2.0 Applications
的好教程只是不要给其他开发者提供密钥
或者,您可以通过已安装的证书锁定SQL的身份验证。这样您就可以基于客户端而不是用户来设置安全性。 http://msdn.microsoft.com/en-us/library/ff649255.aspx
我们的标准做法是在开发数据库中使用一个“开发人员登录”,该数据库具有有限的访问权限,并且生产框具有不同的用户名/密码。开发人员无权访问生产框,只能访问开发人员,然后通过部署脚本复制生产web.config。
答案 1 :(得分:0)
开发人员是否需要访问web.config文件?如果是这样,我想你可能会失败。如果没有,意味着他们不需要更改web.config文件,请更改其权限,以便只有管理员和asp.net进程才能读取该文件。
答案 2 :(得分:0)
根据我的经验,往往难以从内部开发者那里隐藏那种东西。如果您的开发人员只是单步执行代码,即使加密webconfig中的配置infhaamtion也会显示...
我猜想,如果你这样做,你可以在你的数据库字符串的代码中创建一个私有常量字符串,然后在编译的应用程序上使用Dotfuscator或类似的。显然,源代码本身也必须加密,否则开发人员无法访问它。
答案 3 :(得分:0)
您无法真正保护开发人员的密码 - 此外,它有什么意义? 你可以做的就是拥有独立的开发服务器,开发人员可以访问这些开发服务器,并且他们没有这些开发服务器。
开发人员是否需要直接登录数据库才能运行某些测试?如果他们这样做,使用应用程序使用的相同帐户进行测试是有意义的,否则测试结果可能无法反映现实。
答案 4 :(得分:0)
prompt for the password
,当您第一次连接并在会话中跟踪passowrd时。现在只有你能够从任何地方连接数据库。将所有这些应用程序不可用的页面重定向到其他没有密码的用户。