gpt4 book ai didi

encryption - 在服务器上安全地加密/解密 appsettings.json

转载 作者:行者123 更新时间:2023-12-04 04:15:13 24 4
gpt4 key购买 nike

如何保护用于加密 Web 应用程序中的敏感数据的加密 key appsettings.json ?

我想保护我的 Web 应用程序配置中的敏感数据。

在 ASP.NET MVC4 应用程序中,我们这样做:

  • 敏感数据(例如连接字符串中的密码)不会直接添加到 web.config (或 web.prod.config 等),而是写入占位符变量。
  • 在部署时,我们的部署服务 (Octopus) 将从其安全存储中检索敏感数据并覆盖 web.config 中的变量。 .
  • 然后,部署过程将使用 aspnet_regiis.exe 加密 web.config 的敏感部分。 .

  • 现在我们使用的是 ASP.NET Core,我们遵循的过程有点不同。
  • appsettings.json保存敏感数据的占位符变量,
    类似于 web.config 之前的工作方式。
  • 部署过程像以前一样用其安全存储中的敏感数据替换占位符。
  • 而不是使用 aspnet_regiis ,我相信我需要:

    a) 制作我自己的自定义工具来加密 appsettings.json 的部分内容文件。

    b) 制作一个可以解密(全部/部分)appsettings.json 的自定义配置提供程序

  • 我不明白的是如何保护用于(a)和(b)的加密 key 。旧方法利用服务器的机器 key 来加密文件。

    我试图减轻的威胁是有人可以访问 appsettings.json在服务器上并从中读取敏感数据(例如数据库密码等)

    我也对减轻这种威胁和/或这种方法的其他问题的替代方法感兴趣。

    最佳答案

    如果有人未经授权访问服务器,那么窃取 secret - 例如数据库连接字符串只是问题的一小部分(@Dmitry 的回答)。

    由于您希望更好地控制 secret 数据或配置,因此可以稍微偏离通常的appsettings.json。基于的方法。

    您可以获取 secret ,使用服务器的证书对它们进行非对称加密,将它们存储在单独的文件中(这可能是另一个 .json 文件),然后读取文件并在启动时/在每个 Web 请求上解密 secret 。这样, secret 几乎与服务器的证书/私钥一样安全。

    另一种选择:对称加密 secret 并在启动时将密码提供给 Web 应用程序,以便它可以解密 secret 。当托管 Web 应用程序的进程重新启动时,您必须再次输入密码(您可以使用单独的机器定期输入密码)。

    另见 Data Protection in ASP.NET Core , Data Protection samples .

    有时,长而神秘的密码或对其他对人类友好的密码的简单混淆就足够了。也就是说,只是防止窃听。比如说,坐在管理员旁边的某个人将无法阅读和记住一串明显随机的字符。

    关于encryption - 在服务器上安全地加密/解密 appsettings.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47687906/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com