15

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

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

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

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

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

4

4 回答 4

21

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

代码项目示例:

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

于 2008-09-10T14:33:39.877 回答
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 4.0.30319.0 管理实用程序,用于在本地计算机上安装和卸载 ASP.NET。版权所有 (C) 微软公司。版权所有。加密配置部分...成功!

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

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

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

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


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

于 2016-11-08T14:11:18.313 回答
0

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

于 2008-09-10T14:36:56.937 回答
0
  1. 发布您的项目
  2. 以管理员身份打开开发人员命令提示符
  3. 使用这个命令asp_rigiis -pef "appSettings" "C:\yourPublishPath" -prov "DataProtectionConfigurationProvider"
于 2020-04-02T18:43:52.060 回答