Как я могу надежно проверить, что запросы на мой сервисный файл пришли с моего сайта? - PullRequest
1 голос
/ 08 января 2011

У меня есть класс service.php, который я использую для обслуживания вызовов AJAX с моего сайта.Чтобы другие люди не могли получить доступ к сервису с помощью PHP CURL, я бы обычно проверял, что запрос пришел от mysite, а если нет, просто перенаправьте на мою домашнюю страницу, например,

if($_SERVER['HTTP_REFERER'] != "http://www.mysite.com"){
   header('location: http://www.mysite.com');
   exit;
}

Я читаю в священной библии PHP:

http://www.php.net/manual/en/reserved.variables.server.php

, что

"Не все пользовательские агенты установят это, а некоторые предоставляют возможность изменять HTTP_REFERER какособенность. Короче говоря, ей нельзя доверять. "

Так что, если этот метод ненадежен, у меня вопрос: как я могу надежно проверить, что запросы на мой сервисный файл поступили с моего сайта?

Спасибо за любую помощь, которую вы можете оказать!

Ответы [ 2 ]

1 голос
/ 08 января 2011

Вам необходимо создать небольшой файл cookie сеанса, который включает время запроса страницы, IP-адрес запрашивающей стороны и некоторую секретную строку, которая время от времени изменяется (то есть действует в течение часа или около того).Файл cookie должен быть зашифрован.Теперь, когда выполняется AJAX-вызов, вы проверяете cookie, сравниваете IP, проверяете секретную строку и действуете соответствующим образом.

Но, по правде говоря, это сделает задачу хакера более сложной, но не невозможной.Поэтому вам нужно добавить HTTPS в уравнение, и даже тогда хороший троян на компьютере клиента сделает возможным ложный запрос.Но для большинства сценариев вышеупомянутый + HTTPS отгонит злоумышленника.

1 голос
/ 08 января 2011

Думаю, ты не можешь легко. То, что вы могли бы сделать, это сделать свои собственные файлы всегда размещать какую-то парольную фразу. Скажем, вы отправили некоторые данные (дата-время?) И хэш "datetime+secretstring"

Как только вы знаете секретную строку, только вы можете создать хеш. Повторно создайте хэш во втором файле, используя полученную дату и время, и проверьте правильность отправленного хеша.

Запросы с других сайтов не будут содержать ваш хэш и дату или время, или, по крайней мере, неправильный.

...