如何加密app.config(不使用解密方法)

3
我想加密位于app.config中的"ConnectionString"设置。但在运行时,我希望可以直接使用(读取ConnectionString),而不需要对其进行解密。
我的意思是,我不想让任何人解密这个字符串。不应该有解密方法。 我考虑,它应该像嵌入到.net/asp.net/iis功能中一样使用。 就像"Windows登录"(您可以输入并使用它,但无法解密)。
示例用法:您拥有一些关键数据的小型网站。您没有资金购买专用服务器,因此您正在共享服务器上工作。如果服务器被黑客攻击,您的应用程序和数据库将被窃取。但如果您在app.config中放置了加密的连接字符串,那么这将很难解密并查看数据库内部内容。

更不用说一旦服务器被攻击,你的web.config文件将变得或者已经变得无关紧要了。 - Grant Thomas
加密的内容将保持加密状态,直到被解密。恐怕就是这么简单。 - user1017882
也许你应该将问题定位于存储应用程序范围设置的可能替代配置文件方案上? - user1017882
各位,你们是如何保护你们的 SQL 数据的呢?如果我发现了 winserver2012 的零日漏洞并攻击了你们的服务器,那么你们将没有任何数据库保护了吗? - Lost_In_Library
如果您被黑客攻击,您可能没有受到保护,这是正确的。使攻击变得更加困难的方法是不通过usr/pwd连接您的站点和数据库,而是通过服务帐户;然后您必须模仿真实用户才能访问数据库。减少攻击向量的另一种方法是仅允许存储过程-这使得任何未经实现的操作都无法进行。当然还有许多其他方法。 - LosManos
显示剩余2条评论
2个回答

2

使用aspnet_regiis.exe工具可以通过命令行对配置文件中的设置进行加密和解密。

详细信息请参见以下MSDN文章:

加密和解密配置节

由于该工具主要用于Web应用程序,因此它期望配置文件的名称为“web.config”。这意味着您暂时需要将app.config文件重命名为web.config:

rename App.config web.config
aspnet_regiis -pef connectionStrings . -prov DataProtectionConfigurationProvider
rename web.config App.config

1

DPAPI 可能是一个解决方案。

您可以将您的 usr/pwd/凭据连接到机器上。JGalloway 对此比我更了解。JGalloway 对任何 dotnet 相关的事情都比我更了解。 http://weblogs.asp.net/jgalloway/archive/2008/04/13/encrypting-passwords-in-a-net-app-config-file.aspx

如果我没有搞混,这会创建一个与机器硬件绑定的 usr/pwd 组合。即更改网络卡等可能会导致故障。此外,不能在一台机器上创建 usr/pwd/凭据,然后将其转移到另一台机器上。简而言之,这意味着您必须在生产机器上执行必要的操作-如果您的目标是持续交付,这可能会让您头痛。

注意:我自己没有尝试过。相反,我选择了“常规”加密。如果有人拿到我的加密字符串和字节码并进行反向工程,那么我就完了。但对我来说,这已经足够安全了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接