我正在开发一个Web应用程序,需要用户名和密码存储在web.Config中,它还指的是Web应用程序本身而不是客户端请求的一些URL。
我知道.Net框架不允许提供web.config文件,但我仍然认为将此类信息保留为纯文本是不好的做法。
到目前为止,我所阅读的所有内容都要求我使用命令行开关或将值存储在服务器的注册表中。由于主机在线且我只有FTP和控制面板(helm)访问权限,因此我无法访问这些内容。
任何人都可以推荐我可以使用的任何好的免费加密DLL或方法吗?我宁愿不发展自己的!
感谢您的反馈到目前为止,但我无法发出命令,也无法编辑注册表。它必须是一个加密的util / helper,但只是想知道哪一个!
答案 0 :(得分:19)
修改强>
如果您不能使用asp实用程序,则可以使用SectionInformation.ProtectSection方法加密配置文件。
codeproject上的示例:
Encryption of Connection Strings inside the Web.config in ASP.Net 2.0
答案 1 :(得分:1)
虽然乍一看似乎很简单,但我遇到了几个障碍。
所以我使用默认的加密提供程序提供了对我来说很好的步骤(加密 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版本4.0.30319.0 管理实用程序,用于在本地计算机上安装和卸载ASP.NET。 版权所有(C)Microsoft Corporation。版权所有。 加密配置部分...... 成功了!
您还可以在web.config中解密部分:
这些步骤相同,但aspnet_regiis使用选项-pdf
而不是-pef
。
也可以加密web.config的其他部分,例如,您可以通过以下方式加密连接字符串部分:
aspnet_regiis -pe "connectionStrings" -app "/SampleApplication"
有关详细信息,请访问here.
注意:上述加密对您的网络应用程序透明,即您的网络应用程序无法识别设置已加密。
您还可以选择使用非透明加密,例如使用Microsoft的DPAPI或使用AES以及Framework AES Class。
如何使用 DPAPI 我已经描述了here at Stackoverflow。 DPAPI在某种意义上非常相似,它使用机器或用户凭证的密钥。通常,非透明加密为您提供更多控制权,例如您可以添加SALT,或者您可以根据用户的密码使用密钥。如果您想了解有关如何从密码短语生成密钥的更多信息,请查看here。
答案 2 :(得分:0)
使用aspnet_setreg.exe http://support.microsoft.com/kb/329290
答案 3 :(得分:0)