【问题标题】:PHP - Block External API CallsPHP - 阻止外部 API 调用
【发布时间】:2016-04-12 18:07:18
【问题描述】:

我在我的网站中用 PHP 创建了一个 API

现在我想保护它,因为我不希望其他网站和/或用户可以从不属于我的网站调用它

只能从我的站点拨打电话

我该怎么办?

谢谢。

【问题讨论】:

  • 有多种方法可以做到这一点,您可以简单地创建一个硬编码的密码,您必须提供凭证或只有静态 IP

标签: php api block


【解决方案1】:

您可以在 API 的开头使用它

if($_SERVER['REMOTE_ADDR'] != '127.0.0.1'){
    die;
}

它将终止所有未从您的服务器调用的 API 尝试。

编辑

或者,如果您希望用户能够调用 API,您可以给他们一个 API 密钥,将其存储在您的数据库中。

例如

$con = mysqli_connect("localhost","my_user","my_password","my_db");
$key = mysqli_real_escape_string($con, $_GET['key']);
$search = mysqli_query("SELECT * FROM user WHERE api_key = '$key'");
if(mysqli_num_rows($search)==0){
    // kill the request
    die;
}
else{
    // Allow the request and do your business
}

【讨论】:

  • 问题是用户可以调用API(这是一个注册确认)并且 $_SERVER['REMOTE_ADDR'] 标签需要匹配站点的IP,而不是用户的IP,在你的建议......
  • 127.0.0.1 是您网站的服务器 IP,而不是用户的。为什么不直接制作 API 密钥?
  • 我已经编辑了我的答案,向您展示了一种接受 API 密钥的方式。
猜你喜欢
  • 2014-09-27
  • 2011-12-19
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 2013-01-14
相关资源
最近更新 更多