代码之家  ›  专栏  ›  技术社区  ›  Chris Klepeis

.NET SQL Server连接字符串-对其他开发人员隐藏密码

  •  6
  • Chris Klepeis  · 技术社区  · 16 年前

    我们正在将一个站点迁移到ASP.NET。我们不想使用集成安全性,它使用Windows帐户连接到SQL Server(不想讨论原因,这是不可能的)。我们创建了一个用户名和密码来连接到SQL Server,并希望使用该用户名和密码,但是,我们也不希望其他开发人员看到此信息(很容易从web.config读取)。我知道它可以被加密,但它也可以很容易地被开发人员解密——加上加密的性能会受到影响。

    这个问题有什么解决办法吗?

    5 回复  |  直到 16 年前
        1
  •  2
  •   Glennular    16 年前

    这里有一个很好的教程 Encrypting Configuration Information in ASP.NET 2.0 Applications

    不要给其他开发人员钥匙

    或者,可以通过已安装的证书锁定SQL的身份验证。这样,您就可以基于客户机而不是用户来设置安全性。 http://msdn.microsoft.com/en-us/library/ff649255.aspx

    我们的标准做法是在开发数据库中使用一个“开发人员登录”,该数据库的访问权限有限,并且生产框的用户名/密码不同。开发人员没有访问生产框的权限,只有主要开发人员可以访问,然后通过部署脚本复制生产web.config。

        2
  •  0
  •   Tommy    16 年前

    开发人员是否需要访问web.config文件?如果是的话,我想你可能走运了。如果没有,这意味着他们不需要更改web.config文件,请更改对该文件的权限,以便只有管理员和ASP.NET进程可以读取该文件。

        3
  •  0
  •   AllenG    16 年前

    根据我的经验,很难从你的内部开发人员那里隐藏这种东西。即使在webconfig中加密config信息,如果开发人员只是简单地执行代码,也会显示出来…

    我想,如果必须这样做,您可以在代码中为DB字符串创建一个私有常量字符串,然后在编译后的应用程序上使用dotfuscator或类似的方法。显然,源代码本身也必须加密,否则您的开发人员将无法访问它。

        4
  •  0
  •   Piotr Rodak    16 年前

    你不能真正保护密码不受开发人员的攻击——而且,它有什么意义? 您所能做的是拥有独立的开发服务器,开发人员可以访问该服务器,而生产环境却不能访问该服务器。

    开发人员不需要直接登录到数据库来运行一些测试或什么吗?如果他们这样做,那么使用应用程序使用的相同帐户进行测试是有意义的,否则测试结果可能无法反映实际情况。

        5
  •  0
  •   this. __curious_geek    16 年前

    prompt for the password ,当您第一次连接并跟踪会话中的passowrd时。现在只有您能够从任何地方连接数据库。将所有这些都重定向到“应用程序不可用”页面,以使其他用户不具有密码。