我正在尝试为我的网站制作一个基本API,因此我赞同的某些其他网站可以显示我网站上的内容。我的服务器上有一个PHP脚本,其他网站可以访问以XML格式提取内容。如何确保只有某些网站可以访问我服务器上的这个php页面?
答案 0 :(得分:5)
大多数需要类似“身份验证”的API都会选择API密钥。只是一个在请求中传递的大字符串。
您可以通过解析域的IP并根据传入的请求检查它来强化它。这是缓慢且昂贵的,因此缓存IP查找(但请确保清除它们,因为域IP合法地改变!)
答案 1 :(得分:4)
使用.htaccess只允许按IP地址的特定用户。
通常你用它来阻止像这样的特定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
编辑:如果您绝对需要通过脚本执行此操作(在第二次仔细阅读您的问题时,我认为您这样做了),那么您可以这样做。
<?
$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");
?>
答案 2 :(得分:2)
一个简单的选择是将页面放入目录,然后打开基本的HTTP身份验证。你会发出用户名&amp;您希望能够访问内容的密码。
网址可以将用户名和密码编码为: http://username:password@hostname/ ...
这样,除了指定稍微不同的网址之外,您无需修改.htaccess文件或远程端,无需更改。
用户名和密码通过互联网以明文形式传递,因此您需要确定这是否是可接受的风险。