2014-10-07 155 views
0

所以我有這個私有和公共api的REST API。所以在代碼中,我允許並拒絕每個API的請求。我使用這段代碼:PHP Programmaticaly允許/拒絕域

public function allowDomain($domain) { 
    header('Access-Control-Allow-Origin: ' . $domain); 
} 

現在經過一番研究,我也不太清楚,如果這是這樣做(因爲欺騙)的安全方法。這是正確的事情還是有更多的東西?如果是這樣的話?

+0

你們是不是要拒絕來自其他(不受信任的)域訪問客戶端的JavaScript的網頁上運行,或拒絕訪問完全不受信任的域? – Quentin 2014-10-07 12:47:04

+0

@Quentin我需要拒絕它的JavaScript訪問和來自不受信任的域的所有其他請求。 – 2014-10-07 12:48:32

+0

@ f.lorenzo - 那麼你需要使用基於密碼的認證,而不是提供公共的JS訪問。 – Quentin 2014-10-07 12:53:15

回答

0

要真正保護您的API(私人部分),您應該使用密鑰或令牌。 Access-Control-Allow-Origin只在客戶端,所以Javscript不會因爲安全原因而不要求API。您仍然可以在瀏覽器或其他地方訪問此API。

請參見:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

+0

但是私人JavaScript(來自同一個域)將如何訪問它? – 2014-10-07 12:55:46

+0

只需爲每個GET添加一個密鑰:/local/api.php?key=254236234523452345並在您的API中檢查if'($ _ GET [「key」] == 254236234523452345)' – Matthias 2014-10-07 12:57:22

相關問題