存储设置的最佳实践
本文关键字:最佳 设置 存储 | 更新日期: 2023-09-27 18:14:45
我只做了1-2年的编程,c#最近7个月左右,到目前为止,我已经使用。config文件来存储不能存储在数据库中的所需设置,这样做是可以的。
现在我有一个客户端,其中有许多用户将访问数据库,并且规范的一部分是应用程序必须使用sa用户名登录到sql,显然,如果有人持有这些设置,这将是一个问题。
我想知道这种事情的最佳实践是什么,我可以加密密码和服务器地址,但我仍然对此感到不安。
存储不能在数据库中存储的设置,特别是那些敏感配置的最佳实践是什么
Many Thanks in advance
您可以将设置放入本地数据库。我喜欢MS SQL Server Compact 3.5,它是免费的。通过这种方式,您可以将设置存储到本地SDF数据库文件中,该文件可以加密并受密码保护。存储在SDF文件中的数据可以使用例如ADO来访问。. NET+SQL,但我更喜欢lintosql。
编辑:请注意,虽然SDF文件可以加密和密码保护,但如果文件被盗,肯定可以用暴力破解的方法。对于在客户端机器上存储敏感数据的任何其他解决方案也是如此。
您可以尝试将信息存储在隔离存储
我强烈建议重新考虑让应用程序使用sa帐户的需求。这是一个巨大的安全漏洞。鉴于所提供的信息,我建议对连接进行加密(将其存储在哪里并不重要)。确保如果数据库连接方法失败,错误结果不会显示用户名和密码。
最佳实践方法(我认为)是使用SQL server集成安全:(你授权一个Windows/Active Directory用户访问服务器,现在由Windows安全方面和你的域配置)——然而这并不总是可行的,和你可能不想给外面的Windows用户,访问数据库的客户端软件(例如,应用程序必须在数据库中插入/更新/删除记录,你未必希望用户能做如果他们登录到数据库通过ssm)
另一种方法是使用System.Security.Cryptography.ProtectedData
类的'Protect'和'Unprotect'方法加密和解密密码和/或连接字符串。(你需要设置对System.Security.dll的引用)。
这就绕过了"你在哪里隐藏密钥"问题——ProtectedData类使用Windows机器的熵池来生成密钥。您可以添加自己的"盐"(通过字节数组作为"附加熵"的方式),以确保在同一用户上下文中运行的另一个. net程序不能使用ProtectedData类检索数据。你可以"保护"密码/数据,所以它只能由保护它的同一台机器上的同一用户"取消保护"。
希望这对你有帮助:)
欢呼,西蒙。