2011-06-05 17 views
5

(如果沒有,它實際上提高客戶端的安全性?)關於客戶端安全性,CORS除了顛覆同源策略之外還有其他什麼嗎?

我想從哪兒服務器X的腳本使用XHR來獲取和運行從服務器Y(支持CORS)不受信任的代碼的情況。

(顯然不可信評估代碼是壞™)

+1

腳本本身不受跨域限制。例如,來自域X的腳本可以包含來自域Y的腳本,並執行代碼。這可以通過一個普通的腳本標籤來完成,沒有CORS。 – monsur 2011-06-05 16:22:46

+0

我很清楚這一點,我不認爲它有助於回答這個問題 – adam77 2011-06-06 07:55:21

回答

5

我不使用CORS在所有提高安全性。我使用CORS訪問不同域上的已知Web服務,如果沒有CORS,我將不會訪問它。在我看來,與提高安全性無關,而是允許將來自一個域的數據委託給另一個域。

+1

是的,這就是我假設,但它已經不停地談論作爲某種安全改進,使我得到了錯誤的想法,謝謝。所以同源策略或多或少是多餘的,這要歸功於CORS? – adam77 2011-06-06 07:57:17

+4

CORS適合您和您的數據服務器進行通信。同源策略仍然適用於任何不實施CORS的服務器。我猜你的意思是,壞人可以實現CORS帶*號的域,將允許任何域得到他們的數據... – mplungjan 2011-06-06 09:21:46

5

CORS是不是硬化安全性,它是關於削弱它(但只有在從服務器允許一定條件下)。

如果您要訪問從另一臺服務器東西在一個AJAX請求,沒有CORS,你不能因「安全」(同源策略),那就是它的結束*。使用CORS,其他服務器可以授予權限以減少安全屏障。

*除了像JSONP黑客,但也需要從服務器

+0

你回答是或否我原來的問題? – adam77 2012-03-26 23:45:48

+0

@ adam77回答你原來的問題是CORS沒有做相關的客戶端安全任何東西,至少據我理解這句話。同源策略可防止基於瀏覽器的第三方服務拒絕服務攻擊。 CORS允許第三方服務器通知瀏覽器它不需要該保護。 – rjmunro 2012-11-26 23:05:40

1

CORS許可顛覆了同源策略,但選擇如此。例如,一個銀行的網站域名就根本沒有設置CORS標題(保持全效同源),因爲沒有JavaScript的其他域中的下載,應使AJAX請求給銀行(或者也許他們僅允許他們信任的合作伙伴網站)。 CDN可能會設置Access-Control-Allow-Origin「*」,因爲它不關心從另一個域下載的JavaScript是否向CDN發出AJAX請求。

+0

所以這是一種(選擇性)安全性的弱化。 – adam77 2015-03-19 22:00:17

+2

如果相同的原產地政策聲明你永遠不會打開你的公寓的大門,那麼CORS說我們可以爲比薩人打個比方。 – Ryan 2015-03-27 16:55:40

相關問題