2010-09-21 97 views
23

我在哪里可以找到用于ASP.NET的machineKey config部分?ASP.NET machineKey config部分的默认位置

我的应用程序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

回答

32

machineKey位于System.web条目web.config

请参阅MSDN link for web.config架构。

如果你没有在你的web.config中看到它,你可以在那里添加它。

MSDN再次:-)

为了提供防篡改的ViewState,从视图状态的内容生成的散列消息认证码(HMAC)和所述散列是在随后的请求进行比较。 指示要使用的哈希算法的验证属性,它默认使用SHA1,它使用HMACSHA1算法。散列的有效选择包括SHA1或MD5,尽管SHA1是更可取的,因为它会产生更大的散列并被认为比MD5的加密性更强。 validationKey属性与ViewState内容结合使用来生成HMAC。如果您的应用程序安装在Web场中,则需要将验证密钥从AutoGenerate,IsolateApps更改为特定的手动生成的密钥值。

<pages><machineKey>元素的默认设置在计算机级web.config.comments文件中定义。

对于machineKey中,他们是

<machineKey validationKey="AutoGenerate,IsolateApps" 
      decryptionKey="AutoGenerate,IsolateApps" 
      validation="SHA1" decryption="Auto" /> 

编辑: 对于.NET 4.0的默认算法一直changedSHA256 我认为找到默认的最简单的方法就是看在入门该配置值的MSDN。

机器键的MSDN 4.0如下。所选值是默认值。 []中的值是该字段可以采用的其他可选值。 我记得读过某处这是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] 
/> 
+2

如果它不存在(它没有)什么是默认值? – 2010-09-21 10:55:51

+0

编辑答案。这有帮助吗? – InSane 2010-09-21 11:02:13

+4

啊'web.config.comments'。那个有什么用?只是列出如果它们没有在根目录web.config中指定的默认值?另外,我喜欢Windows搜索的方式不起作用,或者ID已经找到了我自己!谢谢 – 2010-09-21 11:23:22