如何在C#连接字符串中隐藏密码?

Doo*_*ght 15 c# dbconnection

我有以下连接字符串:

Data Source=Paul-HP\MYDB;Initial Catalog=MyMSDBSQL;Persist Security Info=True;User ID=sa;Password=password
Run Code Online (Sandbox Code Playgroud)

(.net webservice)显然可以通过打开app.config文件并查看配置设置来查看.

我需要的是一种让黑客无法看到密码的方法.但同时,保持可自定义,以便在部署到另一个数据库时可以更改它.

Jus*_*tin 16

你有很多选择 - 我所知道的(按照优先顺序排列):

  1. 使用集成(SSPI)安全性,您无需在配置文件中包含密码
  2. 加密连接字符串(请参阅使用受保护的配置加密配置信息)
  3. 分别存储用户名和密码,并使用字符串格式构建完整的连接字符串,

例如,连接字符串可能如下所示:

Data Source=Paul-HP\MYDB;Initial Catalog=MyMSDBSQL;Persist Security Info=True;User ID={0};Password={1}
Run Code Online (Sandbox Code Playgroud)

我会选择选项1,如果那不可能那么选项2.我已经提到选项3的完整性.

您是否阅读过保护连接信息(ADO.NET)

  • @Doomsknight [我刚刚从你的帖子末尾删除了“谢谢”签名](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from -帖子) (2认同)

jga*_*fin 6

首先,不要使用"SA"帐户.如果有人获得密码,它会使您的数据库全开.使用仅允许在特定数据库上执行CRUD操作的自定义帐户.

获得的唯一方法web.config是破解您的服务器.如果他们这样做了,你还是被搞砸了.

  • 请激励投票,以便我有机会改进我的答案. (2认同)
  • 等等......但这个答案实际上并没有回答这个家伙的问题!(不是我downvoted) (2认同)
  • 我没有低估你的答案,但是还有很多其他的可能性从web.config获取密码不仅是为了破解服务器,例如某些病毒可以在部署之前从本地开发机器获取密码,或者其他情况.无论如何......问题是如何加密密码,这是有道理的,因为关于密码检查的主要规则 - "永远不会保留在纯文本中" (2认同)
  • +1 提到不使用 SA :)。我只是出于开发原因使用它,但这是非常重要的一点。 (2认同)