我最近不得不將Access-Control-Allow-Origin
設置爲*
,以便能夠進行跨子域ajax調用。
現在我不禁感到,我正在將我的環境置於安全風險之中。
如果我做錯了,請幫助我。設置Access-Control-Allow-Origin的安全風險是什麼?
回答
通過回覆Access-Control-Allow-Origin: *
,請求的資源允許與每個來源共享。這基本上意味着任何站點都可以向您的站點發送XHR請求並訪問服務器的響應,如果您未實施此CORS響應,情況就不會如此。
因此,任何網站都可以代表訪問者向您的網站提出請求並處理其響應。如果您的某些實現方式(如身份驗證或授權方案)基於瀏覽器自動提供的內容(Cookie,基於cookie的會話等),第三方網站觸發的請求也會使用它們。
這確實會帶來安全風險,特別是如果您允許資源共享不僅僅針對選定的資源,而且針對每個資源。在這種情況下,你應該看看When is it safe to enable CORS?。
AFAIK,Access-Control-Allow-Origin只是一個從服務器發送到瀏覽器的http頭。例如,將其限制到特定地址(或禁用它)並不會使您的網站更安全,例如,機器人。如果機器人想要,他們可以忽略標題。常規瀏覽器(Explorer,Chrome等)默認爲標頭。但像Postman這樣的應用程序完全忽略它。
服務器端在返回響應時並未實際檢查請求的「原點」。它只是添加了http頭。它是發送請求的瀏覽器(客戶端)決定讀取訪問控制頭並對其執行操作。請注意,在XHR的情況下,它可能會使用特殊的「選項」請求首先要求標題。
所以,任何具有創造性腳本功能的人都可以輕易地忽略整個標題,無論設置在哪個標題中。請參閱Possible security issues of setting Access-Control-Allow-Origin。
我們其實回答這個問題
我不禁覺得,我把我的環境安全 風險。
如果有人想攻擊你,他們可以輕鬆地繞過訪問控制允許來源。但通過啓用'*',您確實可以爲攻擊者提供更多的「攻擊媒介」,例如使用遵守HTTP標頭的常規網頁瀏覽器。
看看這個從一個粗心的最終用戶的角度來看。有人可以設置一個惡意網頁,它會注入JavaScript以在真實網站和惡意網站之間傳遞數據(假設他們想竊取您的密碼)。最終用戶的網絡瀏覽器通常會阻止這種跨站點通信,但是如果設置了Access-Control-Allow-Origin,那麼它將被允許,並且最終用戶不會更聰明。 – Brain2000 2014-04-11 15:57:41
是的,在一個承載腳本竊取密碼的惡意網站上設置'Access-Control-Allow-Origin *'是強烈建議:-) – commonpike 2014-04-12 18:24:34
哦,我得到了一個笑話。不,我不能從用戶的角度來看待它。它是決定設置HTTP標頭的網站管理員或網站製作者。 「有人可以設置惡意網頁」 - 是的,也有人會添加惡意指令。再次,任何客戶端 - 如受感染的瀏覽器 - 可能會選擇忽略http標頭,無論它們是否在其中。 – commonpike 2014-04-25 12:30:57
這裏有兩個例子張貼評論,當一個通配符是真的有問題:
假設我登錄到我的銀行網站。如果我轉到其他頁面,然後返回到我的銀行,我仍然因Cookie登錄。其他 互聯網上的用戶可以像我一樣在我的銀行中訪問相同的URL,但是 他們將無法訪問我的帳戶,而無需Cookie。如果 允許跨域請求,惡意網站可以有效地冒充用戶。
- Brad
假設你有一個常見的家用路由器,如一個Linksys WRT54G或 東西。假設路由器允許跨域請求。我的網頁上的腳本 可能會向通用路由器IP地址 (如192.168.1.1)發出HTTP請求,並重新配置您的路由器以允許攻擊。它甚至可以直接使用你的路由器作爲DDoS節點。 (大多數路由器 測試頁,其允許ping或簡單的HTTP服務器會檢查這些 可能會被濫用集體。)
- Brad
我覺得這些意見應該是答案,因爲他們用一個reallife例子來解釋這個問題。
- 1. 使用xpath有什麼安全風險?
- 2. AHAH是安全風險嗎?
- 3. WordPress - 安全風險?
- 4. lambda表達式序列化中的安全風險是什麼?
- 5. /var/run/docker.sock的Docker安全風險是什麼?
- 6. 將PHP文件權限設置爲完全的安全風險
- 7. 安全風險(XSS)的風格屬性
- 8. 可以image.src是一個安全風險?
- 9. 設置引用標題的安全風險?
- 10. FormsAuthentication並在加密的cookie中設置userID/name,安全風險?
- 11. 爲什麼使用'*'作爲postMessage的targetOrigin存在安全風險?
- 12. Php.ini設置會帶來安全風險嗎?
- 13. 使用Flex時存在什麼安全風險
- 14. 運行Erlang集羣時有什麼安全風險?
- 15. IPv6:爲什麼IPv4映射地址存在安全風險?
- 16. 讓javascript訪問外部圖像有什麼安全風險?
- 17. set_include_path有什麼缺點或安全風險?
- 18. 爲什麼跨域AJAX請求被標記爲「安全風險」?
- 19. 設置SVN二進制文件的SUID/SGID位是否存在安全風險?
- 20. 是我的db連接的全球安全風險?
- 21. Emacs中的「風險」是什麼?
- 22. 什麼是禁用ngSanitize的風險?
- 23. 給予加密和加密密碼的安全風險是什麼?
- 24. 什麼是包括數據庫密碼在web.config中的潛在安全風險
- 25. Ajax最大的安全風險是什麼?它們如何被緩解?
- 26. 呈現用戶輸入Django模板的安全風險是什麼?
- 27. WCF自簽證明的安全風險
- 28. 框架登錄中的安全風險
- 29. Apache中auto_prepend_file的安全風險?
- 30. Drupal中$ update_access_free = true的安全風險
如果你可以給出一個具體例子,說明共享授權訪問如何構成安全風險,我會對此表示讚賞。 – 2013-04-10 12:56:55
@Gumbo靜態內容怎麼樣? (例如靜態cdn內容,例如javascripts,css,static htmls等)是否存在設置「訪問控制 - 允許 - 來源:*」的安全問題?沒有nogin等,他們是公開給大家的? – 2013-06-27 07:14:25
@UmutBenzer沒關係。 – Gumbo 2013-06-27 16:46:34