2012-04-30 28 views
2

我使用backbone和node.js創建網站,並且不認爲默認情況下有針對CSRF的任何保護。在使用Node.js的骨幹網時,是否有一種標準的方式來對抗CSRF? 謝謝使用backbone和node.js的CSRF防禦

回答

4

您可以簡單地確保請求具有值爲XMLHTTPRequestX-Requested-By標頭。 AJAX請求具有跨域限制,所以如果該標題存在,則它不是例如一個惡意網站上的隱藏表單。

+0

是不是依靠瀏覽器來防止跨域的ajax請求? – dan

+0

所有瀏覽器都會阻止它們。 – ThiefMaster

+2

您不能依賴**常見的**瀏覽器停止該行爲的事實。它在客戶端完全* opt-in *並且**不可信任。如果我使用[zombie.js](http://zombie.labnotes.org)實施惡意客戶,該怎麼辦? –

2

我不知道任何特定的node.js +主幹,但您可以使用http://www.senchalabs.org/connect/middleware-csrf.html(假設您使用express或某些連接兼容)。您需要在您的html的某個位置輸出令牌,例如元標記。然後,您可以修改骨幹同步方法來拉取該令牌,並通過頭,查詢或表單傳遞它。

1

如果Allow-Origin標頭設置爲寬容(例如,Allow-Origin:*X-Requested-By不會阻止請求僞造。在其他主機上運行的任何JavaScript都將能夠製作仍然可以請求僞造的請求。