繁体   English   中英

在 web.config 中加密 appSettings

[英]Encrypting appSettings in web.config

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

我知道 .Net 框架不允许提供 web.config 文件,但是我仍然认为将此类信息以纯文本形式保留是不好的做法。

到目前为止我读过的所有内容都要求我使用命令行开关或将值存储在服务器的注册表中。 我无法访问这些,因为主机在线,我只能访问 FTP 和控制面板(掌舵)。

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

感谢到目前为止的反馈,但我无法发出命令,也无法编辑注册表。 它必须是一个加密实用程序/助手,但只是想知道是哪一个!

编辑:
如果您不能使用 asp 实用程序,您可以使用SectionInformation.ProtectSection方法加密配置文件。

代码项目示例:

ASP.Net 2.0 中 Web.config 中连接字符串的加密

虽然乍一看似乎很简单,但我遇到了一些障碍。

所以我提供了使用默认加密提供程序对我有用的步骤(加密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 版本 4.0.30319.0 管理实用程序,用于在本地计算机上安装和卸载 ASP.NET。 版权所有 (C) 微软公司。 版权所有。 加密配置部分...成功!

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

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

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

可以在此处找到有关此的更多详细信息


注意:上述加密对您的 Web 应用程序是透明的,即您的 Web 应用程序无法识别设置已加密。
您还可以选择使用非透明加密,例如使用 Microsoft 的 DPAPI 或将AES与框架的AES Class一起使用。
它是如何使用DPAPI完成的,我已经在 Stackoverflow 中进行了描述。 DPAPI 的工作原理非常相似,因为它使用机器或用户凭据的密钥。 通常,非透明加密为您提供更多控制权,例如您可以添加 SALT,或者您可以使用基于用户密码的密钥。 如果您想了解有关如何从密码短语生成密钥的更多信息,请查看此处

使用 aspnet_setreg.exe http://support.microsoft.com/kb/329290

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM