加密连接字符串,以便其他开发人员无法解密,但应用程序仍然具有访问权限

dda*_*vis 1 .net encryption connection-string

我有一个数据库,我想通过.NET Web应用程序访问.我可以很容易地加密web.config中的连接字符串,但任何有权访问该框的开发人员都可以使用几行代码对其进行解密 - 他们可以访问该框,因此可以访问存储在计算机中的加密密钥.配置.

虽然我可以通过拒绝他们的用户帐户访问来锁定数据库,但是网络应用程序拥有众所周知的密钥并没有帮助.任何人都知道允许Web应用程序访问数据库的好方法,而不会让精明的开发人员使用Web应用程序使用的SQL帐户吗?

Yan*_*rtz 5

这是鸡和蛋的问题.如果您的应用程序可以访问密钥(加密连接字符串的密钥),那么与您的应用程序具有相同权限的任何人都可以访问它.

管理这个的最好方法是根本没有秘密,不要在SQL Server连接字符串中使用login/pwd,而是使用集成安全性(SSPI).这样,您的应用程序将使用其Windows凭据(运行该应用程序的帐户)对数据库进行身份验证,而无需在线路上发送任何凭据(常规身份验证意味着每次打开时都会在应用程序和数据库之间传递login/pwd连接),您不必存储任何密码.您只需要确保正在运行的帐户的密码不容易猜到.在那之后,你就像帐户是安全的一样安全(这没什么好写的,但它比在进程之间传递凭据要好得多).

请注意,使用相同凭据(应用程序中的任何代码)运行的任何内容也将使用服务帐户的权限运行.

您还应该将应用程序帐户可以对数据库执行的操作限制为最低限度(无管理员/ dbo).

  • 令我感到害怕的是,几乎我加入的每个项目都使用sa帐户来进行简单的数据库交互.更糟糕的是,界面中通常存在一些深奥的,过度设计的登录过程. (2认同)