仅允许某些网站访问PHP API

时间:2014-07-07 18:36:26

标签: javascript php api security rest

我目前面临的问题是保护客户在其网站上使用的API。但是,因为这个API是由JavaScript调用的,所以我发现很难找到一种只允许这些访问API / URL的方法。

那我该怎么办呢?我怎么才能允许访问这些链接。显然链接可能会受到损害,但我想有办法拒绝脚本运行,如果它不是来自经过验证的网站。我可以想到使用的ATM是Referrer标头,我们都知道,它可以伪造。有没有办法可以跟踪请求的来源?如果是这样,怎么样?因为那时我可以检查请求的来源,如果它不是允许的源,那么只需发出403 Forbidden。

感谢。如果您需要更多信息,请随时询问!

2 个答案:

答案 0 :(得分:1)

就个人而言,我会构建一个数据库表,列出你想要允许的网址,以及每个网址的唯一键,如

  

url = http://stackoverflow.com

     

key = 9fc4c60c2f6b9aaba3a640e5e4b9bc4d

然后使用基本身份验证来验证您的呼叫并检查身份验证标头以匹配每次访问的网址和密钥。

这显然取决于你如何构建你的API,但作为一个提示Slim PHP Framework是一个很棒的工具,并且有一个非常好的基本身份验证中间件

另一种方法是拥有一个php文件,其中包含所有允许站点的数组,然后通过此数组检查每个调用。

答案 1 :(得分:0)

在您的服务器上设置白名单...我的服务器上没有任何详细信息,因此我无法详细说明。

如果您使用的是节点服务器,则可能有一组受信任的域,如果请求您的api的域不包含在内,则会发送错误。如果您反向代理节点服务器或使用其他语言,您也可以在apache / nginx /您使用的任何地方执行类似程度的操作。

相关问题