Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅允许某些网站访问PHP页面_Php - Fatal编程技术网

仅允许某些网站访问PHP页面

仅允许某些网站访问PHP页面,php,Php,我正在尝试为我的网站制作一个基本的API,这样我认可的某些其他网站可以显示我网站的内容。我的服务器上有一个PHP脚本,其他网站可以访问该脚本以获取XML格式的内容。如何确保只有某些网站可以在我的服务器上访问此php页面?大多数需要类似“身份验证”的API都选择API密钥。只是请求中传递的一个长字符串 您可以通过解析域的IP并根据传入的请求进行检查来加强这一点。这既慢又昂贵,因此缓存IP查找(但请确保在域IP合法更改时清除它们!)只允许通过IP地址的特定用户使用.htaccess非常简单 通常,您

我正在尝试为我的网站制作一个基本的API,这样我认可的某些其他网站可以显示我网站的内容。我的服务器上有一个PHP脚本,其他网站可以访问该脚本以获取XML格式的内容。如何确保只有某些网站可以在我的服务器上访问此php页面?

大多数需要类似“身份验证”的API都选择API密钥。只是请求中传递的一个长字符串


您可以通过解析域的IP并根据传入的请求进行检查来加强这一点。这既慢又昂贵,因此缓存IP查找(但请确保在域IP合法更改时清除它们!)

只允许通过IP地址的特定用户使用.htaccess非常简单

通常,您使用它来阻止像这样的特定IP地址

Order allow, deny
Deny from 192.168.0.10
Deny from 212.155.
Deny from 1.2.3.4  5.6.7.8 127.0.0.1
Allow from all
Deny from all
Allow from 1.2.3.4
但您也可以使用它只允许特定用户访问,如下所示

Order allow, deny
Deny from 192.168.0.10
Deny from 212.155.
Deny from 1.2.3.4  5.6.7.8 127.0.0.1
Allow from all
Deny from all
Allow from 1.2.3.4
编辑:如果您确实需要从脚本中执行此操作(在仔细阅读您的问题后,我认为您确实需要),那么您可以这样做

<?
    $allowed[0]="xxx.xxx.xxx.xxx";
    $allowed[1]="yyy.yyy.yyy.yyy";

    // add as many as you need

    if (!in_array($_SERVER['REMOTE_ADDR'],$allowed)) header("HTTP/1.1 403 Forbidden");
?>

一个简单的选择是将页面放入目录,然后启用基本的HTTP身份验证。您将向那些您希望能够访问内容的人颁发用户名和密码

url可以将用户名和密码编码为:

这样,除了修改.htaccess文件或远程端之外,不需要对您的端进行任何更改,只需指定稍微不同的url即可


用户名和密码在互联网上以明文形式传递,因此您需要确定这是否是一个可接受的风险。

克服以明文形式发送的事实的正常方法是使用摘要身份验证而不是基本身份验证,或者使用https。这两种解决方案都是可接受且安全的。更好的是,将IP与已颁发的公钥和秘密salt结合到HMAC()中。但前提是IP是静态的。