2011-05-01 68 views
2

我已經安裝了AntiCSRF HTTPModule,但我需要將它與ajax一起使用。
令牌字段名稱:的RaiseException。
CookieName:__CSRFCOOKIE。
我應該使用Ajax POST手動發送令牌字段值或有別的事要做?
由於我們在這裏使用cookie,任何人都不能創建具有相同名稱和相同值的cookie,並將隱藏字段中顯示的值發送到服務器並獲取數據,或者對此有一些限制? !
謝謝與ajax一起使用AntiCSRF

+0

任何人,任何事!? – 2011-05-02 13:05:44

回答

0

我不熟悉您使用的特定反CSRF模塊。 ASP.Net中內置了反CSRF支持,但它與AJAX相鬥爭。

大多數網站使用安全的僅HTTP cookie進行身份驗證。所有的瀏覽器支持同源策略這意味着只有創建Cookie的網站可以訪問它。

CSRF攻擊是有效的,因爲黑客無需查看cookie,因爲用戶的瀏覽器會將它們連同任何請求一起發送到您的網站。因此,黑客創建了將數據發送到你的網站上的表單:

<form action="yoursite.com/userAdmin/Create"> 
    <input type="text" name="username" value="hackerUser" /> 
    <input type="text" name="rights" value="godlike" /> 
    ... 
</form> 

黑客是不是在您的網站管理員,但他們可以欺騙誰把做的東西爲他們的用戶。

大多數反CSRF保護工作方式相同:通過要求POST-ed表單數據具有網站可以訪問的額外令牌,但黑客無法惡搞。

因此.Net的默認實現添加一個帶有令牌的cookie,隱藏輸入中的相同標記,然後檢查它們是否匹配。黑客無法看到cookie,所以無法重現隱藏的輸入。

這是問題的AJAX調用的原因有兩個:

  • 淨生成令牌作爲隱藏輸入標籤,這意味着一些JavaScript是需要獲取到AJAX調用。
  • 淨兌令牌檢查假定它是一個表單輸入,這意味着JSON調用傳遞它的格式不正確。

這聽起來像你需要做的是手動添加令牌的字段名稱的值到AJAX調用,並確保您發送表單數據。

相關問題