我正在开发一个Web应用程序,它要求将用户名和密码存储在web.Config中,它还引用了一些URL,这些URL将由Web应用程序本身而不是客户端请求。
我知道.Net框架不允许提供web.config文件,但是我仍然认为将此类信息保留为纯文本格式是错误的做法。
到目前为止,我阅读的所有内容都要求我使用命令行开关或将值存储在服务器的注册表中。我无法访问这两个主机,因为主机处于联机状态,并且只能访问FTP和控制面板(helm)。
有人可以推荐我可以使用的任何良好的免费加密DLL或方法吗?我宁愿不发展自己的!
感谢到目前为止的反馈,但是我无法发出命令,也无法编辑注册表。它必须是加密的util / helper,但只是想知道是哪一个!
-
MSDN上的加密和解密配置部分(ASP.NET)
-
ScottGu的博客上的ASP.NET 2.0中的Web.Config值加密
-
K.Scott Allen博客上的"加密自定义配置"部分
编辑:
如果不能使用asp实用程序,则可以使用SectionInformation.ProtectSection方法对配置文件进行加密。
代码项目示例:
ASP.Net 2.0中Web.config内部的连接字符串的加密
乍一看似乎很简单,但我遇到了两个障碍。
因此,我正在使用默认的加密提供程序提供对我来说很好的步骤(用于加密appSettings部分):
加密web.config中的部分:
打开管理员命令外壳程序(以管理员身份运行!)。命令提示符将出现在C:上,用于以下步骤。
进一步假定该应用程序已部署在D:\\Apps\\myApp上-将其替换为您在步骤3中使用的路径。
cd"C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319",在32位Windows系统上使用Framework而不是Framework64
cd /D"D:\\Apps\\myApp"
注意:如果/D开关与当前驱动器不同,它将自动更改驱动器。在这里它将更改路径和驱动器,因此之后的当前目录为D:\\Apps\\myApp。
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的其他部分,例如,可以通过以下方式加密连接字符串部分:
1
| aspnet_regiis -pe"connectionStrings" -app"/SampleApplication" |
有关此的更多详细信息,请参见此处。
注意:上面的加密对您的Web应用程序是透明的,即您的Web应用程序无法识别设置已加密。
您还可以选择使用非透明加密,例如通过使用Microsoft的DPAPI或通过将AES与框架的AES类一起使用。
如何使用DPAPI完成操作,我已经在Stackoverflow上进行了介绍。 DPAPI在使用机器或用户凭证的密钥的意义上非常相似。通常,非透明加密为您提供了更多控制权,例如,您可以添加SALT,或者您可以根据用户的密码使用密钥。如果您想进一步了解如何从密码短语中生成密钥,请查看此处。
发布您的项目
以管理员身份打开开发人员命令提示符
使用此命令asp_rigiis -pef" appSettings"" C:\\\\ yourPublishPath" -prov" DataProtectionConfigurationProvider"
使用aspnet_setreg.exe http://support.microsoft.com/kb/329290