簡體   English   中英

在Rails中使用HTTP GET請求進行CSRF保護

[英]CSRF Protection with HTTP GET requests in Rails

我知道Rails默認情況下沒有針對HTTP GET請求的CSRF保護,因為它聲稱它們是冪等的。 但是,從這些GET請求返回給用戶的敏感信息,我不希望惡意站點檢索此信息。

在Rails中保護CSRF HTTP GET請求的最佳方法是什么?

為了能夠讀取對CSRF攻擊請求的響應,攻擊者需要讓受害者執行他的JavaScript代碼。 在這種情況下,訪問將受到某些同源策略的限制。

假設攻擊請求確實是交叉來源DOM的 同源 策略禁止通過DOM進行訪問(例如,使用iframe嵌入時), 跨域資源共享(CORS)通過XMLHttpRequest調整跨源請求,如下所示:

如果請求是一個簡單的跨源請求 ,即只有簡單的頭字段的 簡單方法 ,那么將發送該請求(這類似於基於HTML的CSRF)。 但訪問簡單的跨源請求的響應取決於響應是否允許資源共享

其他跨源請求在發送實際請求之前需要所謂的預檢 發送該請求以檢查服務器是否允許來自發送預檢的來源的請求。 並且只有在預檢成功並且對實際請求的響應允許資源共享時,才能訪問響應。

因此得出結論:除非您的服務器支持CORS並明確允許與任何其他來源共享(即Access-Control-Allow-Origin: * ),否則CSRF響應(如果請求完全被允許)將無法被攻擊讀取現場。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM