代码之家  ›  专栏  ›  技术社区  ›  Mauro

正在加密web.config中的appsettings

  •  14
  • Mauro  · 技术社区  · 16 年前

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

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

    到目前为止,我读到的所有内容都要求我使用命令行开关或在服务器的注册表中存储值。由于主机处于联机状态,我对这两个选项都没有访问权限,而且我只有FTP和控制面板(helm)访问权限。

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

    感谢各位的反馈,但我不能发出命令,也不能编辑注册表。它必须是一个加密工具/helper,但只是想知道是哪一个!

    3 回复  |  直到 6 年前
        2
  •  1
  •   Robert S.    16 年前
        3
  •  1
  •   Matt    6 年前

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

    因此,我提供的步骤对我很有用(加密 应用程序设置 部分)使用默认加密提供程序:

    加密 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:\App\MyAPP 之后。
    4. c:aspnet_regiis -pef appConfig .

    您应该看到以下消息:

    Microsoft(R)ASP.NET注册表版本4.0.30319.0 用于在本地计算机上安装和卸载ASP.NET的管理实用程序。 版权所有(c)Microsoft Corporation。版权所有。 正在加密配置节… 成功!

    你也可以 解密 web.config中的节: 这些步骤是相同的,但有选项 -pdf 而不是 -pef 对于aspnet_regiis。

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

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

    可以找到更多关于这个的详细信息 here.


    注: 上面的加密是 透明的 对于您的Web应用程序,即您的Web应用程序无法识别设置是否已加密。
    您也可以选择使用 非透明的 加密,例如使用Microsoft的DPAPI或使用 AES 以及框架 AES Class .
    如何处理 DPAPI 我已经描述过了 here at Stackoverflow . 在某种意义上,DPAPI的工作原理非常相似,即它使用机器或用户凭证的密钥。一般来说, 非透明加密 提供了更多的控制,例如,您可以添加一个salt,或者根据用户的密码使用一个密钥。如果您想了解更多关于如何从密码短语生成密钥的信息,请查看 here .