首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ViewState EnableViewStateMAC

ViewState EnableViewStateMAC
EN

Stack Overflow用户
提问于 2010-08-09 13:44:45
回答 1查看 309关注 0票数 0

如果EnableViewStateMAC设置为true,ASP.NET将为ViewState数据生成一个哈希码,并将其与存储在POST值中的哈希码进行比较。是什么阻止攻击者根据更改后的表单值设置哈希值?

EN

回答 1

Stack Overflow用户

发布于 2011-03-01 08:32:14

生成的散列是基于表单值和服务器(请参阅Salt on wikipedia)已知的私钥的。因此,您无法在没有salt字符串的情况下生成有效的散列。

您可以查看Mono implementation中的反序列化源代码,并参见System.Web.UI.ObjectStateFormatter,method System.Web.UI.ObjectStateFormatter()

代码语言:javascript
运行
复制
if (EnableMac) {
    data = MachineKeySectionUtils.VerifyDecrypt (Section, data);
else {
    data = MachineKeySectionUtils.Decrypt (Section, data);
}

在类System.Web.Util.MachineKeySectionUtils中,方法VerifyDecrypt()

代码语言:javascript
运行
复制
using (KeyedHashAlgorithm kha = GetValidationAlgorithm (section)) {
    kha.Key = GetValidationKey (section);
    // ...
}

其中GetValidationKey()返回用于签名和验证散列的盐...

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3437593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档