2012-02-14 53 views
-1

我阅读了如何使用< @ Html.AntiForgeryToken()>在隐藏字段中生成加密值,该字段还将匹配另一个值作为会话cookie存储在用户的浏览器中。令牌验证方法如何工作以防止在asp.net中的CSRF mvc3

但我的问题是: - 1.将在会话cookie的值也进行了加密, 2.如果是那么如何动作控制器上的[ValidateAntiforgeryToken]会知道如何解密这两个值和匹配?

BR

回答

1

将在会话cookie的值也进行了加密

是。它代表一个令牌。它与用于隐藏字段的值相同。其实这是帮助你做2件事的Html.AntiForgeryToken()。它会生成令牌并将其呈现在隐藏字段中,并且还会设置具有相同值的Cookie。

如果是,那么操作控制器上的[ValidateAntiforgeryToken]将如何知道如何解密这两个值并匹配它们?

它使用经典WebForms用于加密/解密ViewState的相同加密/解密算法。这是一个基于机器密钥的对称加密算法。这就是为什么如果您在网上服务器场中运行,则应确保您在所有节点上具有相同的机器密钥,因为如果在Web场的一个节点上生成并加密了防伪造令牌,则可能无法在另一个节点上解密节点发送POST请求时,如果机器密钥不匹配。

相关问题