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