在web.config中加密appSettings

15

我正在开发一个Web应用程序,需要将用户名和密码存储在web.Config文件中,并引用一些URL,这些URL将由Web应用程序本身而不是客户端请求。

我知道.NET框架不允许提供web.config文件,但我仍然认为在明文中留下这种信息是不好的做法。

到目前为止,我阅读的所有内容都要求我使用命令行开关或将值存储在服务器的注册表中。但我既不能访问其中任何一个,因为主机在线且我只有FTP和控制面板(helm)访问权限。

有人可以推荐任何好的、免费的加密DLL或方法吗?我宁愿不要自己开发!

感谢大家迄今为止的反馈,但我无法发出命令,也无法编辑注册表。必须使用加密工具/帮助程序,但只是想知道哪一个最好!

4个回答

21

很抱歉,那些链接都是关于命令行的,而我们无法直接访问命令行。如果我在自己的计算机上加密它,然后部署到服务器上,它将无法正常工作,因为密钥不存在或不同。 - Mauro
1
他指的是加密自定义配置节。这是一个简单的例子,相关的MSDN文章在此处 - Matt

2

虽然一开始看起来很简单,但我遇到了一些障碍。

所以我提供了一些对我有效的步骤(使用默认的加密提供程序来加密appSettings部分):

加密 web.config 中的部分:

  1. 打开管理员命令提示符(以管理员身份运行!)。命令提示符将位于 C:,以下步骤假定如下。
    进一步假定应用程序部署在 D:\Apps\myApp 上 - 请将该路径替换为您在第3步中使用的路径。
  2. cd "C:\Windows\Microsoft.NET\Framework64\v4.0.30319",在32位的Windows系统上使用Framework而不是Framework64
  3. cd /D "D:\Apps\myApp"
    注意:如果当前驱动器与指定驱动器不同,则/D开关会自动更改驱动器。这里它将更改路径和驱动器,因此当前目录之后将是D:\Apps\myApp
  4. c:aspnet_regiis -pef appConfig .

您应该会看到以下消息:

Microsoft (R) ASP.NET RegIIS version 4.0.30319.0 Administration utility to install and uninstall ASP.NET on the local machine. Copyright (C) Microsoft Corporation. All rights reserved. Encrypting configuration section... Succeeded!

您也可以解密 web.config 中的部分: 这些是相同的步骤,但使用 aspnet_regiis 的选项-pdf而不是-pef

还可以加密 web.config 的其他部分,例如可以通过以下方式加密连接字符串部分:

aspnet_regiis -pe "connectionStrings" -app "/SampleApplication"

有关更多详细信息,请单击此处.


注意:上面所述的加密对于您的Web应用程序是透明的,即您的Web应用程序不识别设置已加密。
您还可以选择使用非透明的加密,例如使用Microsoft的DPAPI或使用AES以及Framework的AES Class.
如何使用DPAPI 在Stackoverflow中我已经描述了这里。从某种意义上说,DPAPI的工作方式非常相似,它使用机器或用户凭据的密钥。通常,非透明的加密会给您更多的控制权,例如您可以添加SALT,或者可以使用基于用户口令的密钥。如果您想了解有关如何从口令生成密钥的更多信息,请查看此处


0
  1. 发布你的项目
  2. 以管理员身份打开开发人员命令提示符
  3. 使用以下命令:asp_rigiis -pef "appSettings" "C:\yourPublishPath" -prov "DataProtectionConfigurationProvider"

我非常确定这个程序使用了你的机器密钥,因此一旦加密就无法传输到其他机器上,在我上面的场景中,我无法在主机上运行命令行。 - Mauro

0

这构成了一个仅包含链接的回答,违反了网站规则。 - Mauro

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