Django附帶CSRF protection middleware,它生成一個唯一的每個會話令牌以用於表單。它會掃描所有傳入的POST
對正確標記的請求,並在標記丟失或無效時拒絕請求。暴露會話的CSRF保護令牌安全嗎?
我想爲某些POST請求使用AJAX,但表示請求沒有CSRF令牌可用。這些頁面沒有<form>
元素可以插入,我寧願不要將標記插入作爲隱藏值的標記。我認爲這樣做的一個好方法就是公開像/get-csrf-token/
這樣的一個vew來返回用戶的令牌,依靠瀏覽器的跨站點腳本規則來防止惡意站點請求它。
這是個好主意嗎?有更好的方法來防止CSRF攻擊,同時仍然允許AJAX請求?
CSRF令牌應隨每個操作而改變。你是否建議每個操作更新令牌?這並不意味着用戶的操作必須變得同步(其次在第一次返回並給出新的csrf標記之前不能啓動)。 – Mystic 2010-07-22 16:34:34
這不是最好的答案。正如Carl Meyer在他的回答中所說的那樣:由於Django已經以不同的方式保護了AJAX請求,所以沒有必要通過在Django *中使用token *來保護來自CSRF的AJAX請求。這也消除了神祕人的擔憂。 – hopla 2010-09-10 07:43:40
也許這將幫助,即使我沒有排序關於ajax和CSRF的故事http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax – amirouche 2011-04-06 21:21:01