Запретить прямой доступ к файлу, вызываемому функцией ajax - PullRequest
32 голосов
/ 18 ноября 2009

Я звоню php-код из ajax, как это:

ajaxRequest.open("GET", "func.php" + queryString, true);

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

Как запретить прямой доступ к http://mysite/func.php, но разрешить доступ к странице ajax?

Также я попробовал решение , опубликованное здесь , но оно не работает для меня - всегда получаю сообщение «Прямой доступ не разрешен».

Ответы [ 12 ]

0 голосов
/ 25 апреля 2013

В этом нет никакого смысла. Это не добавляет никакой реальной безопасности.

Все заголовки, которые указывают, что запрос выполняется через Ajax (например, HTTP_X_REQUESTED_WITH), могут быть подделаны на стороне клиента.

Если ваш Ajax обслуживает конфиденциальные данные или разрешает доступ к конфиденциальным операциям, вам необходимо добавить надлежащую защиту, например систему входа в систему.

0 голосов
/ 18 ноября 2009

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

Исходя из этого, я бы предложил использовать куки:

Просто setcookie() на странице, которая использует AJAX, и проверьте $_COOKIE для правильных значений на func.php. Это даст вам разумную уверенность в том, что каждый, кто звонит по адресу func.php, недавно посетил ваш сайт.

Если вы хотите стать более любопытным, вы можете установить и проверить уникальные идентификаторы сеанса (вы уже могли это сделать), чтобы убедиться, что файл cookie не подделан или не используется.

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