【问题标题】:ASP.NET. What is best practices for managing sensitive data in *.config files for any non-Azure deploymentASP.NET。对于任何非 Azure 部署,管理 *.config 文件中的敏感数据的最佳做法是什么
【发布时间】:2017-02-10 20:51:54
【问题描述】:

这篇文章有点类似于下面的链接。不幸的是,我没有足够的声望在那里提问,所以我在这里提问。

Confused on what is the correct procedure on storing passwords in Web.config for Azure deployment

如果您要部署到 Azure,上面的帖子似乎效果很好,因为 Azure 为您提供了一个 UI 来存储敏感数据,例如;密码和密钥。因此,不需要外部文件。但是,如果我不部署到 Azure,则假定无法通过其他 Web 托管公司使用此功能,因此该答案不适用。

我的问题是,什么是保护敏感数据免受通过 Internet 传输以及设法获取包含敏感数据的 *.config 文件的恶意用户的最佳方法?我的一些想法如下。

1.) 将敏感数据放在目录树上两个文件夹的外部文件 (AppSettingsSecrets.config) 中?

2.) 将敏感数据放在同一个项目中的外部文件 (AppSettingsSecrets.config) 中,但将文件的构建操作设置为

3.) 将敏感数据放在 web.config 文件中,但加密文件中包含敏感数据的部分?

在 *.config 文件本身中保护敏感数据的原因是,如果恶意用户设法获取包含敏感数据的文件,他们将无法读取敏感数据。所有三个选项似乎都只解决了第一个问题(防止敏感数据数据通过互联网传输),但选项 3 似乎也只解决了防止获得 *.config 文件的恶意用户读取敏感内容的问题。如果是这种情况,那么对于放置敏感数据的文件以及该文件的位置,这三个选项似乎都没有实际意义;只需加密包含敏感数据的 web.config 文件部分并继续。我错过了什么吗?

【问题讨论】:

    标签: asp.net security encryption


    【解决方案1】:

    我创建了两个方便的批处理文件来加密和解密web.config 文件的appSettingsconnectionStrings 部分:

    EncryptWebConfig.bat

    @ECHO OFF
    
    REM ENCRYPT THE CONTENTS CONTAINED IN THE appSettings SECTON OF THE WEB.CONFIG FILE
    C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "appSettings" "Folder path to web.config"
    
    REM ENCRYPT THE CONTENTS CONTAINED IN THE connectionStrings SECTON OF THE WEB.CONFIG FILE
    C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" "Folder path to web.config"
    
    REM PAUSE FOR VERIFICATION ON THE SCREEN OF WHAT HAPPENED.
    PAUSE
    
    @ECHO ON
    

    DecryptWebConfig.bat

    @ECHO OFF
    
    REM DECRYPT THE CONTENTS CONTAINED IN THE appSettings SECTON OF THE WEB.CONFIG FILE
    C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pdf "appSettings" "Folder path to web.config"
    
    REM DECRYPT THE CONTENTS CONTAINED IN THE connectionStrings SECTON OF THE WEB.CONFIG FILE
    C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pdf "connectionStrings" "Folder path to web.config"
    
    REM PAUSE FOR VERIFICATION ON THE SCREEN OF WHAT HAPPENED.
    PAUSE
    
    @ECHO ON
    

    【讨论】:

      【解决方案2】:

      我会尽量给出你已经提到的我的建议。最安全的方法是不要将敏感数据尽可能多地放在网络配置中,如果他们真的需要,您必须使用 method 加密它,这是选项 3,然后继续!

      等一下,继续做什么?您必须转向应用程序的其他安全方面。保护 web 配置部分并不能保证完全保护。您必须强化您的服务器、保护通信、渗透测试或进行在线漏洞测试,甚至源代码扫描。这听起来可能有点矫枉过正,但如果你真的想减轻我提到的安全问题,那是必须的。我说减轻,因为现在你和我不再安全了!除非您没有连接到互联网,否则不会。 :)

      更新:这些工具可能会对您有所帮助。有些是免费的,有些不是。不仅限于此

      • OWASP - 用于渗透测试(免费)
      • Nessus - 用于系统强化(企业)
      • CIS CAT - 操作系统、数据库、WebServer 等技术栈(仅限会员)
      • IBM AppScan - 用于源代码扫描(企业)

      如果您不想自己动手,您可以将这项安全测试委托给第三方,例如whitehatsec

      好吧,这就是我所拥有的一切。我出去了! :)

      【讨论】:

      • 感谢您的回复和方法链接。关于您提到的其他安全措施,您是否有任何在线资源可以讨论您认为有帮助的内容?你是对的,我正在尝试在应用程序内和互联网上的整个通信链中建立安全性。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 2018-06-23
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 2021-11-20
      • 1970-01-01
      相关资源
      最近更新 更多