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

时间:2008-11-08 23:30:01

标签: php

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

3 个答案:

答案 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文件或远程端,无需更改。

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