![](/img/trans.png)
[英]Is it possible to enable rails' built in CSRF protection on a GET action?
[英]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.