2012-03-27 65 views
1

背景:
我創建一個REST API,這將要求用戶僅使用一個JavaScript文件,爲我做了一個Ajax請求,從獲取數據服務器。
爲了做到這一點我寫了下面像PHP:PHP安全,訪問控制允許來源:*

Access-Control-Allow-Origin: * 

我有幾個問題:
1)什麼是安全漏洞的存在,如果我打開其他領域的能力與我互動?
(Access-Control-Allow-Origin:*)
2)我該怎麼做才能保護它?
3)這個「Allow-Origin」是否可以在所有瀏覽器中使用? (移動...) - 或者沒關係?

回答

2

如果使用通配符,則表示任何域都可以向您的域發出跨域請求並獲取頁面。例如,假設您已登錄到您的GMail帳戶。當然,當你打開一個窗口到​​,你會立即看到你的電子郵件和消息(有一些重定向發生,但讓我們假設不是爲了示例和簡單)。

那麼,如果我做了一個網站(不管是什麼),並且我設法讓你在那個網站上,或者我設法修改一個經常出現的網站,我可以向GMail發送一個AJAX請求,如果GMail有Allow-Origin:*並且您已經登錄,那麼AJAX請求將返回通常顯示給您的頁面的HTML;您的電子郵件列表。最糟糕的情況是,我收到了你所有電子郵件和你寄給他們的人的清單,充其量我也可以處理這些請求並獲得更多信息。

如果我是你,我不會使用通配符;我會使用某種可信域列表。

允許來源是強制服務器端。至於跨源AJAX支持,它在大多數瀏覽器中都受支持。對於舊版本的IE,您必須使用不同的對象來提出請求。

+0

你能告訴我一個攻擊的例子嗎?我只是沒有得到它...(你可以訪問PHP本身? – funerr 2012-03-27 17:09:24

+0

@ agam360,我編輯我的帖子有一個更清晰的解釋。這是否更有意義? – 2012-03-27 17:20:44

+0

所以你說我應該掃描網站,並檢查如果它在「白名單」上,那麼人們可以自己僞造?(我應該使用什麼函數?) – funerr 2012-03-27 22:20:27