【发布时间】:2014-10-20 14:54:01
【问题描述】:
我想创建一个 API,并且为了验证 API 消费者,我将提供一个 API KEY、App-id 和 App-Secret。问题是我想知道http请求来自哪里,这样我就可以知道发出que请求的主机是否是注册主机。例如:www.someone.com 有一个 app-id :0001、app-secret:1200 和 api-key:458。如果这个凭证用于发出A请求,我想知道请求者是否真的是www.someone.com
【问题讨论】:
-
对于来源使用这个
header("Access-Control-Allow-Origin: " . $_SERVER['HTTP_ORIGIN'] . "");,然后从 GET 或 POST 变量中检查凭据 -
使用来源作为安全措施是无用的。这个头可以很容易地be faked。相反,您可能希望使用回调来传递一些“请求令牌”(想想 oauth 流程是如何工作的)。
-
使用 HTTP_ORIGIN 或 HTTP_REFERER 而不检查它们“本质上”与使用“*”相同,这可能会打开微妙的安全漏洞,因此不鼓励,请参阅 stackoverflow.com/questions/12001269/…
-
实际问题“如何获取http请求来源”的答案可以在这里找到:stackoverflow.com/questions/41326257/…