【问题标题】:Cross environment web.config encryption using aspnet_iisreg使用 aspnet_iisreg 的跨环境 web.config 加密
【发布时间】:2016-01-25 22:59:45
【问题描述】:

我正在开发一个 asp.net mvc-5 Web 应用程序。我正在使用由第 3 方应用程序生成的安全令牌从我的服务器端调用第 3 方 API。 现在我以如下安全方式传递令牌:-

  • 我正在将令牌添加到 http 标头。
  • 我们正在使用 https 与第 3 方系统进行通信。

所以我认为令牌在传输过程中不会被黑客入侵。但我面临的问题是如何存储和读取令牌本身。目前我将其存储在我们的web.config 部分中:-

<appSettings>

.....    
.....
    <add key="SecureToken" value="12345" />
.....
.....
</appSettings>

我正在检索我的应用程序中的值,如下所示:-

string Token = System.Web.Configuration.WebConfigurationManager.AppSettings["SecureToken"]

所以我面临的安全问题是,如果有人访问实时服务器,他可以读取web.config 文件并获取安全令牌。所以我读到我可以使用aspnet_iisreg 命令加密 web.config 部分的一部分。但现在我不确定如何强制它在我的环境中工作?我的意思是我需要在一个环境中运行aspnet_iisreg,比如说开发?或者我需要在三个环境中分别运行这个命令?

【问题讨论】:

    标签: asp.net security iis encryption asp.net-mvc-5


    【解决方案1】:

    它应该通过部署脚本运行,它可以是 msi 或 powershell 或其他东西。如果您手动部署,则需要 aspnet_regiis -pe "yourappsettings" -app ... 这也是一项手动工作且容易出错。因此,开发一个包含所有页面、dll、.js、图像等的包并安装该包(msi 或 powershell 或其他)并将其安装到您的服务器。在那个包中包含一个执行 aspnet_regiis 命令的脚本,这个命令应该在创建虚拟目录之后运行,主要是它应该是最后的动作。如果您使用的是 powershell,它是一组指令 - 所以一个指令应该是 aspnet_regiis 命令。尝试使用 VS Web 部署包的构建后事件。

    【讨论】:

    • 你能在这方面提供更多建议吗?我使用 VS Web 部署包部署我的网站...
    • 所以你的意思是我可以做以下事情;在我的开发环境中使用 VS 生成一个 Web 部署包。然后我可以在我们的实时服务器的 IIS 中部署部署包。之后,我可以将实时安全令牌添加到 web.config。所以在这种情况下,我应该让一切正常,除了令牌在 web.config 中不安全地存储。所以我可以在实时服务器上运行 aspnet_regiis,它将加密包含安全令牌的 web.config 部分,这是正确的吗?我可以在我们将运行 aspnet_regiis 的登台服务器上做同样的事情......
    • 这是一种方法,但如果可能,请避免手动干预,遵循几个步骤,更像是一个 xml 文件的密钥容器,其中包含可用于加密/解密服务器中数据的所需密钥并在脚本执行完成后删除 xml 文件。使用所需命令编写脚本文件,包括删除 xml 并在构建后事件中执行。 codeproject.com/Articles/877258/… 这个网址显示了 webfarm 场景中的加密,您可能需要也可能不需要 webfarm,但这个概念肯定有助于做出更好的决定。
    猜你喜欢
    • 2023-03-24
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 2018-07-12
    • 2010-11-07
    相关资源
    最近更新 更多