加密web.config中的appSettings

时间:2008-09-10 14:31:05

标签: .net security encryption web-applications appsettings

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

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

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

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

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

4 个答案:

答案 0 :(得分:19)

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

codeproject上的示例:

Encryption of Connection Strings inside the Web.config in ASP.Net 2.0

答案 1 :(得分:1)

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

所以我使用默认的加密提供程序提供了对我来说很好的步骤(加密 appSettings 部分):

web.config中的

加密部分:

  1. 打开管理员命令shell(以管理员身份运行)。命令提示符将显示在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 .
  5. 您应该会看到以下消息:

      

    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)

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