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