2012-02-14 17 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請求時,如果機器密鑰不匹配。

相關問題