【发布时间】:2011-11-01 23:43:51
【问题描述】:
由于一些安全问题,我需要启用视图状态加密。我关闭了 viewstate 和 viewstateMAC,但我需要加密 __VIEWSTATE 表单参数中包含的“control state”字符串。
目前我的 web.config 看起来像:
<pages enableViewState="false" enableViewStateMac="false">
当我设置以下内容时,在 cassini 中,我的视图状态被加密:
<pages enableViewState="false" enableViewStateMac="false" viewStateEncryptionMode="Always">
当我在我的 IIS 6 服务器上进行相同的更改时,什么也没有发生。
我看到应用程序域回收(事件:位于“C:...”中的应用程序“/LM/W3SVC/...”已为域“...”初始化)。当我触摸 web.config 但我没有像 cassini 那样获得加密的视图状态。我尝试过站点停止/启动、IIS 重置停止/启动、清除 ASP.NET 临时文件缓存。任何人对配置这个需要做什么有任何建议?
【问题讨论】:
-
(我已经问过这个before,但帖子有点太详细了......这被简化了,因为我正在重新讨论这个问题!)
-
这并不能回答你的问题,但由于安全是一个问题,你不应该将
enableViewStateMac设置为false,你应该使用ViewStateUserKey属性来保护你免受CSRF的影响攻击(即使使用加密的视图状态也可能发生)。或者更好的是,使用这个插件:anticsrf.codeplex.com. -
为什么你的 enableViewState 设置为 false???
-
我不需要它。我有一个自定义构建的处理程序,充当 ASP.NET 之上的 MVC。无论哪种方式,所以我将我的 web.config 更改为这个,它仍然没有加密:
标签: asp.net encryption iis-6 viewstate cassini