我遇到的一个问题是试图找到一种方法来安全地存储某些信息。我仍在学习和试验 .NET 作为入门语言以及 C。因此,如果我缺乏基本逻辑,请耐心等待。
要求
目前,我正在使用我的应用程序设置中的“设置”存储来存储几条信息,其中包括:
- SQL 连接字符串(带有凭据)
- SMTP 服务器设置(带有凭据)
- 其他各种带有信息的敏感字符串,我不希望有人找到(至少不是没有相当大的努力)。
我一直在使用“设置”商店,因为坦率地说,能够更容易地在一个中心位置更改值并将其反映在我的代码中。
我当然意识到我可以很容易地创建一个共享类并将其用作所有这些设置的参考。
我需要做到这一点,以便有人不能只使用 .NET 反射器并获取所有这些信息。- 在使用 SmartAssemply 进行试验后,很快就发现“设置”容器在混淆过程中被忽略了。
前进的方向?
所以我做了一些研究,目前我面临着我认为主要的可能前进方式。(请记住,这是来自我有限的经验):
- 创建一个新的共享类,让 SmartAssembly 使用它的混淆方法来隐藏字符串。
- 创建一个 INI/XML 文件以与主应用程序并排(外部)放置。这将被加密并在应用程序需要引用任何包含的设置或字符串时被解密。(虽然我想得越多,我认为它似乎就越有缺陷)。
- 创建一个新的共享类并试验SecureString类?(PoC 将不胜感激)
- 你的想法?
例子
例如,假设我试图隐藏以下字符串。
Dim ConnStr As String = "server=100.100.100.1;user=admin;database=database2;port=3306;password=password123"
如果提供答案的用户能够连同他们的建议一起提供一个小型 PoC,我将非常感激,该 PoC 展示了我如何保护上述字符串以及如何在我的程序中引用它(例如,如果你倾向于加密)。