2014-10-07 162 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