存储设置的最佳实践

时间:2011-11-15 12:19:17

标签: c# configuration config

我只编程了1 - 2年的大部分时间,C#是最近7个月左右,直到现在我已经使用.config文件存储了无法存储在数据库中的所需设置,并且它没关系。

现在我有一个客户端,其中有许多用户将访问数据库,并且规范的一部分是应用程序必须使用sa用户名登录到sql,显然如果有人抓住这些设置,那将是一个问题。

我想知道这样的最佳做法是什么,我可以加密密码和服务器地址,但我仍然对此感到不安。

行业中存储不能存储在数据库中的设置的最佳做法是什么,尤其是那些敏感配置的设置

非常感谢提前

4 个答案:

答案 0 :(得分:0)

您可以将设置放入本地数据库。我更喜欢MS SQL Server Compact 3.5,它是免费的。这样,您可以将设置存储到本地SDF数据库文件中,该文件可以加密并受密码保护。存储在SDF文件中的数据可以使用例如文件来访问。 ADO.NET + SQL,但我更喜欢Linq-to-SQL。

编辑:

请注意尽管SDF文件可以加密并受密码保护,但如果文件被盗,它绝对可以通过强力方法破解。对于在客户端计算机上存储敏感数据的任何其他解决方案也是如此。

答案 1 :(得分:0)

您可以尝试在Isolated Storage

中存储信息

答案 2 :(得分:0)

我不能高度推荐重新审视应用程序使用sa帐户的要求。这是一个巨大的安全漏洞。鉴于提供的信息,我建议加密连接(在存储它的地方并不重要)。确保如果数据库连接方法失败,错误结果将不会显示用户名和密码。

答案 3 :(得分:0)

最佳实践方法(我认为)将使用SQL Server集成安全性:(您授权Windows / Active Directory用户访问服务器,安全方面现在由Windows和您的域配置处理) - 但是这并不总是实用,你可能不想让windows用户在客户端软件之外访问数据库(例如,应用程序必须在数据库中插入/更新/删除记录,这些东西你不一定想要用户如果他们通过SSMS登录数据库就能做到这一点

另一种方法是使用System.Security.Cryptography.ProtectedData类的'Protect'和'Unprotect'方法来加密和解密密码和/或连接字符串。 (您需要设置对System.Security.dll的引用)。

这解决了“你在哪里隐藏密钥”问题 - ProtectedData类使用你的Windows机器的熵池来生成密钥。您可以添加自己的salt(通过字节数组作为“附加熵”),以确保使用ProtectedData类在同一用户上下文下运行的另一个.NET程序无法检索数据。您可以“保护”密码/数据,使其只能由受保护密码/数据的同一台用户“不受保护”。

希望这会有所帮助:)

干杯,

西蒙。