2012-12-27 492 views
14

我們有一個.NET C#MVC應用程序,其中有一些表單可以正常工作。現在我們還有一個需要與這些表單交互的ASP Classic vbscript頁面,但是使用普通帖子時,我們收到一條錯誤,提示__RequestVerificationToken未設置。__RequestVerificationToken有什麼用?

因此,我們請求頁面,然後將隱藏輸入和cookie中的令牌存儲在變量中,並使用POST請求將其發送一長段。它的工作原理。

但看到它很簡單,繞過它,反正它有什麼用?它幾乎沒有提供任何保護。

回答

12

這是一個反僞造令牌(防止CSRF攻擊)。它保證海報是獲得表格的人。

它可以防止任何人僞造一個鏈接,並讓它被有能力的用戶激活。

+0

是的,這將工作在GET請求。然後它的有用性使這些東西就位,所以他們不能像圖像一樣隱藏鏈接。但由於這是一個POST請求,攻擊者不能簡單地在表單上的某處使用鏈接。他需要javascript或一個他可以控制的常規表單。如果有權限訪問,他也可以代表用戶請求令牌並使用它。 –

+2

@HugoDelsing:通過閱讀[this](http://blog.stevensanderson.com/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/)我們瞭解ValidateAntiForgeryTokenAttribute的工作原理。但是,沒有身份驗證的imho(即授權過濾器)令牌在您的帖子中指向無用。身份驗證可防止攻擊者獲取有效的令牌。 – tschmit007