ValidationKey
web场中配置ASP.NET应用程序:
每台服务器的Machine.config文件包含一个machineKey元素,用来将值指派给加密密钥对:
![](/Images/OutliningIndicators/ContractedBlock.gif)
当向视图状态值和窗体身份验证Cookie中添加杂乱信息,以防止重要信息被篡改时,ASP.NET使用validationKey来生成杂乱信息。
如果保护级别足够高,ASP.NET甚至会使用decryptionKey来加密视图状态和验证Cookie。
“AutoGenerate”告诉ASP.NET随机生成一个键并把它保存到主机的本地安全权限(LSA)中。
随机生成的键对于单服务器安装很适用,但是在web场中,每个服务器必须使用相同的键,否则在一台机器上加密的值不能在另一台机器上解密。
在web场中配置ASP.NET应用程序之前,应该对web场中的每台服务器进行如下配置修改。这种修改可以在Machine.config或者本地Web.config中进行:
将machineKey的validationKey属性设置为validationgKey="mmmmm",这里的mmmmm代表40到128字符之间的一个随机值。值越长,越具有保密性。
将machineKey的decryptionKey属性设置为decryptionKey="nnnnnn",这里的nnnnn代表16到48字符之间的一个随机值。
这后一种方法提供的加密性更好,但它只能在支持128位加密的服务器上使用。
下面是Web.config文件的示例,如果把它用在应用程序安装的所有服务器上,会将每台服务器配置为使用相同的验证和加密键:
<machineKey validationKey="6E993A81CF4BDCA1C1031528F55DADBB8AF1772A" decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A77" />
validationKey,decryptionKey生成算法
![](/Images/OutliningIndicators/ContractedBlock.gif)