2016-12-25 188 views
1

我有一個由簡單的JSON API和React前端組成的應用程序。身份驗證通過cookie進行處理,而前端服務來自我用於API的相同域。由於我不允許CORS,因此如果API只接受具有一些自定義標題的請求,例如如果X-Requested-With設置爲XMLHttpRequest,那麼API是否將受到保護以防止CSRF攻擊?API CSRF保護

回答

1

攻擊者可以在不違反同源策略(SOP)的情況下發送包含XMLHttpRequest的跨站請求 - 這裏唯一的限制是攻擊者的站點將無法看到響應。 Cookie包含在受害者瀏覽器發送的每個請求中,因此API調用仍然會與跨站點XHR一起觸發,所以此API仍然易受CSRF攻擊。

如果您不想進行任何安全體系結構更改,那麼CSRF Prevention Cheat Sheet recommends checking the Origin header。本文檔描述了其他方法,例如CSRF令牌同步器方法,它可以用作標題元素,並被認爲是更強大的防禦方法。

+0

謝謝。我通過在本地主機上運行但在不同端口上運行的兩個應用驗證了這一點我無法使用app2的跨站點DELETE請求銷燬app1上的資源,但我可以使用POST創建一個。我的理解是,爲了檢查是否允許發送xhr,只有http選項請求將在所有情況下發送。 – rodic

+1

@rodic對於所有正確的世界的愛,請至少檢查'Origin' - 我向你保證這是可利用的。可以避免飛行前的選項。 – rook

+0

嘿,如果它不清楚,我會採取您的意見,從原來的職位。只是想驗證你說了什麼,因爲我認爲sop的工作方式不同。再次感謝。 – rodic