2015-10-26 77 views
0

我正在研究一个asp.net mvc-5 web应用程序。我使用由第三方应用程序生成的安全令牌从我的服务器端调用第三方API。 现在我传递的令牌以安全的方式如下: -使用aspnet_iisreg跨环境web.config加密

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

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

<appSettings> 

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

,我如下检索我的应用程序内的值: -

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

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

回答

1

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

+0

你能提供更多这方面的信息吗?我部署我的网站使用VS网络部署包... –

+0

所以你的意思是我可以做到以下几点;使用我的开发环境中的VS生成一个web部署包。那么我可以在我们的实时服务器的IIS中部署部署包。在此之后,我可以将实时安全令牌添加到web.config。所以在这种情况下,我应该有一切运作良好,除了令牌存储在web.config中不安全。所以我可以在活服务器上运行aspnet_regiis,它将加密包含安全令牌的web.config部分,这是正确的吗?我可以在我们的暂存服务器上执行相同的操作,在那里我将运行aspnet_regiis ... –

+1

这是一种做法,但如果可能,请避免手动干预,遵循几个步骤更像密钥容器作为具有所需密钥的xml文件可用于加密/解密服务器中的数据并在脚本执行完成后删除xml文件。使用必要的命令编写脚本文件,包括删除xml并在后期构建事件中执行。 http://www.codeproject.com/Articles/877258/How-to-Encrypt-Web-config-Using-aspnet-regiis-exe此网址显示webfarm场景中的加密,您可能需要也可能不需要webfarm,但概念一定会有助于做出更好的决定。 –