加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 隐藏sessionState提供程序值的最佳方法

发布时间:2020-12-16 03:53:58 所属栏目:asp.Net 来源:网络整理
导读:我在我的MVC应用程序中使用Redis缓存会话状态提供程序.当然,提供程序的所有设置都在我的Web.config中.如果我简单地将Host和Key以及所有内容放在简单的字符串中,该应用程序就可以工作,所以它看起来像这样: sessionState mode="Custom" customProvider="MySes
我在我的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 – 事实上我正在使用其他一些东西.但我没有找到一种方法可以专门使用这些.我可以创建app设置变量,但是在sessionState中访问该值的方法是什么?我尝试使用System.Configuration.ConfigurationManager.AppSettings(“[name]”) – 只是那个,带引号和带单引号的那个.

我想也许我只是加密了Web.config ….我发现你可以添加“<'MSDeployEnableWebConfigEncryptRule'> true<'/ MSDeployEnableWebConfigEncryptRule'>” (.pubxml中没有单引号) – 但这对常规Azure网站不起作用.

我还发现了使用aspnet_regiis加密Web.config部分的文章/示例….但这样做在Azure之类的Web场环境中不起作用,对吧?

那么有什么其他选择(如果有的话)? ……或者这是不可能的?
谢谢!

解决方法

您可以使用App Settings提供如下所示的Redis会话状态配置.

例如,我们想在应用程序设置中设置host和accessKey.

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

您可以在应用设置中选择任何字符串作为“关键”.您可以从azure portal设置应用程序设置.

现在,将此键用作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中提供实际值或应用程序设置键.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读