我的应用程序Web.config中没有一个,在根Web.config中没有一个,在我的machine.config中没有一个。
这是否意味着还有一些其他默认的硬编码到ASP.NET?如果是,默认是什么? (对于.NET 2和4)
读了这个:http://msdn.microsoft.com/en-us/library/w8h3skw9.aspx
我期待找到像这样的地方:
<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" />
编辑:1.1文档看起来相当清楚wrt默认值:http://msdn.microsoft.com/en-us/library/w8h3skw9(VS.71).aspx但是4个文档是相当模糊的http://msdn.microsoft.com/en-us/library/w8h3skw9.aspx
解决方法
请参阅MSDN link for web.config Schema。
如果你不在web.config中看到它,你可以把它添加到那里。
从MSDN再次:-)
为了提供防篡改的ViewState,从ViewState内容生成散列消息认证码(HMAC),并在随后的请求中对散列进行比较。指示哪个哈希算法使用的验证属性,默认为SHA1,它使用HMACSHA1算法。哈希的有效选择包括SHA1或MD5,尽管SHA1是优选的,因为它产生较大的散列,并且被认为比密码学强于MD5。验证Key属性与ViewState内容结合使用以产生HMAC。如果您的应用程序安装在Web场中,则需要将ValidGenerate,IsolateApps中的validationKey更改为特定的手动生成的键值。
< pages>的默认设置和< machineKey>元素在机器级web.config.comments文件中定义。
对于machineKey,他们是
<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="SHA1" decryption="Auto" />
编辑:
对于.NET 4.0,默认算法已经是changed到SHA256
我认为找到默认值的最简单的方法是在MSDN中查看该配置值的条目。
MSDN 4.0 for machinekey如下。所选择的值是默认值。
[]中的值是该字段可以采用的其他可选值。
我记得在某个地方读取这是MSDN中代表配置值的默认值的典型方式。
<machineKey validationKey="AutoGenerate,IsolateApps" [String] decryptionKey="AutoGenerate,IsolateApps" [String] validation="HMACSHA256" [SHA1 | MD5 | 3DES | AES | HMACSHA256 | HMACSHA384 | HMACSHA512 | alg:algorithm_name] decryption="Auto" [Auto | DES | 3DES | AES | alg:algorithm_name] />