2014-01-31 99 views
7

我剛剛瞭解到CORS,基本上是因爲直到現在我才需要它。關於CORS的安全問題

我讀過,CORS允許跨站點起源,用AJAX調用發送HTTP頭,因此其他服務器可以評估該請求從批准場地的到來。

現在我主要關心的是,不能HTTP頭被欺騙?例如,攻擊者不能將請求捲曲到其他服務器,發送我的CORS請求所用的確切HTTP頭文件? 在這種情況下,服務器將接受請求,並且攻擊者將檢索服務器將發送給他的任何敏感數據。

我們都知道它是多麼容易檢索頁面的JavaScript,所以一切我CORS發送可以通過easilly敏銳的目光看到。包含HTTP標頭。

所以,我想敏感信息不應該包含CORS通信內共享... 還是我得到這個一切錯了嗎? 請擺脫一些光! :) 謝謝

回答

8

現在我主要關心的是,不能HTTP頭被欺騙?例如,攻擊者不能將請求捲曲到其他服務器,發送我的CORS請求所用的確切HTTP頭文件?

你這裏有兩個誤解。

  1. CORS標頭是由服務器不是客戶端發送的(雖然有時客戶會做出飛行前OPTIONS請求)
  2. 同源策略是衛冕哪些項目

的同源策略的存在是爲了通過詢問Alice的瀏覽器時,愛麗絲訪問馬洛裏的網站,要求它正從Bob的網站數據停止馬洛裏的(邪惡)的網站。

如果這是可能的,那麼馬洛裏能有這應該是Alice和Bob之間的共享密鑰(如Bob的銀行網站Alice的賬戶餘額)的任何信息。

攻擊者不能將請求捲曲到其他服務器,發送我的CORS請求所做的確切HTTP頭文件?

由於馬洛裏有沒有知道的安全證書有什麼需要被包含在請求(因爲,例如,它們被存儲在Alice的餅乾Bob的網站)的方式:

不可以,但CORS沒有按」這裏沒關係,但同源策略不是由cURL實現的,因爲它不是運行任意網站提供的JavaScript的瀏覽器。

我想敏感信息不應該包含CORS通信

這取決於信息的性質內共享。

如果Alice 和任何網站,你在被允許看到它的CORS頭授權,那麼它是好的發送它(儘管你應該使用SSL):只要您通過身份驗證Alice的身份。

如果只有Alice和你的網站應該看到它,那麼請不要把它CORS標頭(並且不提供任何其他方式繞過同源策略,如JSON-P)。

如果Alice不應該看到它,那麼你不應該將其發送給Alice的瀏覽器,CORS或無CORS。

+0

是的,我說的是飛行前OPTIONS請求。總之,根據您的回答,馬洛裏並不需要知道安全證書(如餅乾,會議等)做出CORS請求鮑勃? 至於當然CORS的捲曲無所謂,我只是給一個例子,如何任何人都可以很容易地「模仿」一個CORS請求。 –

+0

所有OPTIONS請求都會告訴Mallory在請求中可以使用哪些頭文件。這個信息沒有用(在CORS的上下文中),因爲cURL並沒有首先實現同源策略,所以如果包括「錯誤的」頭文件,沒有任何東西可以阻止後續的請求被髮送在上面。 – Quentin

+0

好的,謝謝!根據您的答案和我想做的事情,我可以實現我有什麼想法,無任何安全隱患,並且沒有攻擊者模仿CORS行爲的風險。如果我需要更多關於這個問題的解釋,我會告訴你。再次感謝! –