Разрешить только определенным веб-сайтам доступ к странице PHP - PullRequest
2 голосов
/ 09 ноября 2008

Я пытаюсь создать базовый API для своего веб-сайта, чтобы некоторые другие веб-сайты, которые я одобряю, могли отображать контент с моего сайта. У меня есть PHP-скрипт на моем сервере, к которому другие веб-сайты могут получить доступ к содержимому в формате XML. Как я могу убедиться, что только некоторые веб-сайты могут получить доступ к этой php-странице на моем сервере?

Ответы [ 3 ]

5 голосов
/ 09 ноября 2008

Большинство API-интерфейсов, для которых требуется аналогичная «аутентификация», выбирают API-ключи. Просто большая длинная строка, которая передается в запросе.

Вы можете подтвердить это, разрешив IP-адрес домена и проверив его по входящему запросу. Это медленно и дорого, поэтому кешируйте поиск по IP (но убедитесь, что вы очищаете его, так как доменные IP действительно меняются!)

4 голосов
/ 09 ноября 2008

Разрешение только определенных пользователей по 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

РЕДАКТИРОВАТЬ: Если вам абсолютно необходимо сделать это из сценария (после второго внимательного прочтения вашего вопроса, я думаю, что вы делаете), то вы можете сделать это следующим образом.

<?
    $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 голосов
/ 09 ноября 2008

Простой вариант - поместить страницы в каталог, а затем включить базовую аутентификацию HTTP. Вы должны выдавать имена пользователей и пароли тем, кому вы хотите иметь доступ к содержимому.

URL может кодировать имя пользователя и пароль как: http://username:password@hostname/...

Таким образом, с вашей стороны не требуется никаких изменений, кроме изменения файла .htaccess или удаленного конца, кроме указания немного другого URL.

Имена пользователей и пароли передаются в открытом виде через Интернет, поэтому вам необходимо решить, является ли это приемлемым риском.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...