10

我有几个关于在 asp.net 3.5 中何时以及如何加密视图状态的问题。例如,如果我的 web.config 中有一个机器密钥条目,例如:decryptionKey="AutoGenerate,IsolateApps" validation="AES" decryption="Auto" />

此时视图状态是否加密?或者我还需要在页面部分中指定 viewStateEncryptionMode 吗?

此外,是否可以加密表单身份验证 cookie,但不能同时加密视图状态?

谢谢你的帮助。

4

1 回答 1

13

页面上的控件可以请求对 ViewState 使用加密,但即使此请求也可以被页面设置覆盖。

ViewStateEncryptionMode 枚举具有三个值:Auto、Always 和 Never。默认值为自动。

ViewStateEncryptionMode.Auto

在这种模式下,如果页面上的任何控件请求它,ASP.NET 将加密页面的 ViewState。请注意,这意味着所有 ViewState 都已加密,而不仅仅是请求它的控件的 ViewState。与加密相关的大部分性能成本都在开销中。因此,如果多个控件发出请求,则加密整个 ViewState 比执行单独的加密操作更快。

ViewStateEncryptionMode.Never

如您所料,在这种模式下 ASP.NET 不会加密 ViewState,即使应用程序设置为加密并且页面上的控件已请求它。如果您知道页面中涉及的任何数据都不需要加密,那么将模式设置为从不可能是安全的。但是,此时有关控件的文档很少会披露保存在 ViewState 中的内容,因此如果有可能暴露敏感数据,您将需要小心。

ViewStateEncryptionMode.Always

在这种模式下,ASP.NET 不会等待页面中的控件请求加密。ViewState 始终是加密的。处理敏感数据时,最好使用加密。

来源:http: //msdn.microsoft.com/en-us/library/aa479501.aspx

于 2008-12-04T22:12:18.770 回答