隐藏 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 中提供了实际值或应用程序设置密钥。
我在我的 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 中提供了实际值或应用程序设置密钥。