PHP-阻止外部API调用

PHP-阻止外部API调用,php,api,block,Php,Api,Block,我在我的网站上用PHP创建了一个API 现在我想保护它,因为我不希望其他网站和/或用户可以从一个不是我的网站调用它 只能从我的网站拨打电话 我该怎么办 谢谢。您可以在API开始时使用它 if($_SERVER['REMOTE_ADDR'] != '127.0.0.1'){ die; } 它将终止所有未从服务器调用的API尝试 编辑 或者,如果您希望用户能够调用API,您可以为他们提供一个API密钥,该密钥将存储在数据库中 前 有多种方法可以做到这一点,你可以简单地创建一个硬编码密码,你

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

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

只能从我的网站拨打电话

我该怎么办


谢谢。

您可以在API开始时使用它

if($_SERVER['REMOTE_ADDR'] != '127.0.0.1'){
    die;
}
它将终止所有未从服务器调用的API尝试

编辑

或者,如果您希望用户能够调用API,您可以为他们提供一个API密钥,该密钥将存储在数据库中


有多种方法可以做到这一点,你可以简单地创建一个硬编码密码,你必须提供凭证或只有静态IP。问题是用户可以调用API(这是一个注册确认),并且$服务器['REMOTE\u ADDR']标记需要匹配站点的IP,而不是用户的IP,在您的建议中…127.0.0.1是您站点的服务器ip,而不是用户的。为什么不制作一个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
}