隐藏 sessionState 提供程序值的最佳方法

Best way to hide values for sessionState provider

我在我的 MVC 应用程序中使用 Redis 缓存会话状态提供程序。当然,提供商的所有设置都在我的 Web.config 中。如果我简单地将 Host 和 Key 以及所有这些放在简单的字符串中,该应用程序就可以工作,所以它看起来像这样:

  <sessionState mode="Custom" customProvider="MySessionStateStore">
      <providers>
          <add 
            type="Microsoft.Web.Redis.RedisSessionStateProvider"
            name="MySessionStateStore" 
            host = "[HOST]"
            port = "6379"
            accessKey = "[KEY]"
            ssl = "false"
            throwOnError = "true"
            retryTimeoutInMilliseconds = "5000"
            databaseId = "0"
            applicationName = "TRAXProSurvey"
            connectionTimeoutInMilliseconds = "5000"
            operationTimeoutInMilliseconds = "1000"
          />
      </providers>
    </sessionState>

...其中“[HOST]”和“[KEY]”是实际值。 但这并不完全安全,对吧?有没有办法以某种方式隐藏这些信息?

我知道在 Azure 配置中使用 App Settings - 事实上我正在使用几个来做其他事情。但是我没有找到一种方法可以专门在这里使用它们。我可以创建应用程序设置变量,但是在 sessionState 中访问该值的方式是什么??我尝试使用 System.Configuration.ConfigurationManager.AppSettings("[name]") - 就是这样,带引号,带单引号。

我想也许我只是加密 Web.config....我发现你可以在.pubxml - 但这不适用于常规 Azure 网站。

我还发现 articles/examples 使用 aspnet_regiis 对 Web.config 的部分进行加密......但是这样做在像 Azure 这样的网络场环境中不起作用,对吗?

那么还有哪些其他选择(如果有的话)? ...或者这是不可能的? 谢谢!

您可以使用应用程序设置来提供 Redis 会话状态配置,如下所示。

例如,我们想在应用程序设置中设置主机和访问密钥。

<appSettings>
  <add key="SomeHostKey" value="actual host value" />
  <add key="SomeAccessKey" value="actual access key" />
</appSettings>

您可以在应用程序设置中选择任何字符串作为 'key'。您可以从 Azure 门户设置应用程序设置。

现在,使用此键作为 web.config 中的值,如下所示:

<sessionState mode="Custom" customProvider="MySessionStateStore">
      <providers>
          <add 
            type="Microsoft.Web.Redis.RedisSessionStateProvider"
            name="MySessionStateStore" 
            host = "SomeHostKey"
            port = "6379"
            accessKey = "SomeAccessKey"
            ssl = "false"
            throwOnError = "true"
            retryTimeoutInMilliseconds = "5000"
            databaseId = "0"
            applicationName = "TRAXProSurvey"
            connectionTimeoutInMilliseconds = "5000"
            operationTimeoutInMilliseconds = "1000"
          />
      </providers>
    </sessionState>

如果需要,您可以通过应用设置提供所有参数。您可以通过应用程序设置提供一些参数,并根据需要按 web.config 保留。会话状态提供程序会发现您是否在 web.config 中提供了实际值或应用程序设置密钥。