2013-09-24 24 views
0

我在閱讀有關AntiForgeryToken的內容,但不明白實際使用情況或重要性。我看到人們在他們的形式寫了一碼等作爲AntiForgeryToken()如何在MVC中工作以及如何從AntiForgeryToken檢索服務器操作方法中的值?

@using (Html.BeginForm("Create", "Register")) 
{ 
    @Html.AntiForgeryToken() 
} 

所以它做什麼....它會生成一個唯一令牌,當形式將張貼那麼這個獨特托克會過去,以及一個cookie將傳遞相同的唯一標記值,並且兩個唯一的數據將在服務器端比較兩者是否相等。如果不是,則會發生一些篡改。

我只是不明白,如果其他表單字段值更改或篡改,然後如何確定篡改。假設我們經常在隱藏域中存儲有價值的數據。如果我需要確保隱藏的字段值,那麼AntiForgeryToken如何幫助我們?

我們是否可以使用AntiForgeryToken將其中的寶貴數據封裝起來,然後在服務器端進行比較。

任何人都可以給我一點樣本代碼,我可以把3個有價值的數據放在我的頁面中,如果篡改,那麼友好的消息將顯示給用戶。指導我如何去做。謝謝

+0

http://stackoverflow.com/questions/4074199/jquery-ajax-calls-and-the-html-antiforgerytoken – Thomas

回答

6

AntiForgeryToken背後的想法是防止數據從「假」源發佈。使用僞造(僞造)表單的攻擊者可以誘騙用戶使用當前會話上下文提交任何類型的數據。你可以想象這會造成很多傷害。

一種防止這種情況的方法是在包含用戶特定數據(隨機事件)的表單上隱藏一個存儲在會話中的字段,以便壞人無法僞造它。在這種情況下,當用戶發佈數據,但沒有用戶特定的令牌時,可以將其視爲惡意。

我認爲你有一個誤解,即反僞造令牌是關於檢測發佈的數據是否已被「調和」,而不是。

Here更多的是這個。

+0

我想顯示一個自定義消息或重定向用戶到一個頁面時,行動方法將調用和AntiForgeryToken驗證檢查將faul意味着攻擊者僞造的東西。所以只要指導我如何捕捉AntiForgeryToken驗證將在操作方法結束時失敗。謝謝 – Thomas

+0

@Thomas最簡單的方法就是給你的動作方法添加一個'[ValidateAntiForgeryToken]'屬性。如果令牌被僞造,這將引發異常。如果你想檢測到這種情況,你可以在你的'Global.asax'中捕獲這個異常,並在那裏做你需要的任何事情。 –

相關問題