2012-10-10 33 views
3

我看過的大多數框架都會將表單隱藏的輸入元素插入到表單中,該值是一個CSRF標記。這是爲了防止用戶Bob登錄我的網站,然後去http://badsite.com嵌入img標籤或JS,告訴我的網站執行請求使用鮑勃的仍然登錄會話。什麼阻止某人閱讀JSF的表單輸入中的CSRF標記

我沒有得到什麼是阻止AJAX上的badsite.com上的JS請求我的網站上的表單的URL,從隱藏的輸入元素正則表達式的CSRF令牌,然後AJAX張貼到我的網站那個有效的CSRF令牌?

在我看來,您希望在運行時使用JS將CSRF令牌插入表單中,並從cookie中獲取值(該值對於badsite.com不可訪問)。然而,我沒有聽說過這種方法,許多框架使用CSRF令牌做了簡單的隱藏輸入,我想知道我的解決方案是否過度設計,並且我錯過了隱藏輸入方法的某些部分是安全的。

任何人都可以提供一些清晰度?謝謝!

回答

3

什麼上badsite.com從AJAX請求在我的網站有形式的URL停止JS

Same Origin Policy(除非你用過於寬鬆CORS頭顛覆它)。在未經該主機許可的情況下,在站點上運行的JavaScript無法從託管在其他主機上的站點讀取數據。

對於SOP有一些解決方法,但它們都需要數據讀取的主機(JSON-P,CORS)的協同操作,或者不傳遞任何標識特定用戶的數據(所以不能訪問任何需要授權的東西)。

相關問題