asp.net viewstate加密问题

前端之家收集整理的这篇文章主要介绍了asp.net viewstate加密问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试打开viewstate加密始终作为我的ASP.NET 3.5网站托管在IIS6中的安全措施。我们已经关闭了viewstate,但仍然看到这个字符串中的一些“controlstate”。在测试环境中,我可以在web.config中简单地设置以下内容,我不能再将viewstate解码为半明文:

< pages enableViewState =“false”enableViewStateMac =“true”viewStateEncryptionMode =“Always”>

我甚至添加了以下(由machine key generater生成)到machine.config,仍然加密在我的测试服务器上的viewstate罚款:

< machineKey validationKey =“002 ...”decryptKey =“D90E ...”validation =“SHA1”decrypt =“AES”/>

我的非测试环境似乎没有提取上述更改,因为我可以随时使用以上设置将viewstate解码为纯文本。我做任何改变后,我一直都是iisreset。

有关我的非测试网络服务器的一些信息:

>网络农场/负载平衡(但现在只有一台服务器进行测试)
> sql会话状态(machine.config中的machinekey最初需要设置)
> machine.config:deployment retail =“true”

任何人都可以建议在哪里寻找可能会干扰asp.net viewstate加密的其他设置?

编辑:现在在我的iis测试服务器上,我无法撤销viewStateEncryptionMode设置,因为它正在加密viewstate,即使我将其设置为“从不”,我的其他网站都没有显示这个设置。我可以在哪里看看这个属性被覆盖的地方?有没有任何缓存存储这个设置需要清除,除了我iisreset /停止www服务/触摸machine.config会做什么?

编辑最后:在学习配置文件几天后,我放弃了并通过代码实现了这一点。我已经有一个附加到页面事件的安全模块,所以在Page_Load我添加了:Page.RegisterRequiresViewStateEncryption();

我真的很想知道什么是阻止这种设置在IIS6 immediatley上被拾起。当我在本地运行cassini时,如果我通过页面节点将viewStateEncryptionMode设置为“Always”,我将立即看到它对viewstate进行编码,并使用id =“__ VIEWSTATEENCRYPTED”渲染另外的隐藏字段。当我把它设置为“从不”我会马上看到加密关闭。如果我对我的IIS6托管网站上的网站进行了相同的确切更改,那么它将不会立即生效,但如果我允许该设置保留在那里,最终将会停留。我会停止/启动www服务,重置iis,清除ASPNET临时缓存,但我不知道还有什么尝试?希望这个帖子可以ROT一段时间,有人将来会看到我经历的同样的行为,我们可以进一步弄清楚!

解决方法

我知道自从你发布以来已经有一段时间了,但是你是否认为自己实现了PageStatePersister? PageStatePersister是负责格式化页面中嵌入的ViewState和ControlState数据的组件。如果安全是您的主要关注点,您可以使用任何加密算法来确保数据保持私有。根据您的配置,听起来您处于一个相当有能力的环境中,所以首先要加载测试。还有一点值得一提的是,我不了解或经历MVC的分层参与ViewState,当被纳入“经典”ASP.NET WebForms网站。

祝你好运。

猜你在找的asp.Net相关文章