Проверка XMLHttpRequest в php - PullRequest
       1

Проверка XMLHttpRequest в php

3 голосов
/ 18 декабря 2011

Я отправляю данные на сайт PHP, используя следующий код:

if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
              xmlhttp= new XMLHttpRequest();
      }
      else
      {// code for IE6, IE5
          xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp.open("GET","addEmail.php?email="+escape(email),true);
      xmlhttp.send();
      xmlhttp.close;

Есть ли способ убедиться, что addEmail.php проходит через XMLHttpRequest, чтобы люди не могли просто перейти на www.domain.com / addEmail.php? email=some@thing.com, чтобы заставить php-сайт съесть их электронную почту и выполнить тысячу запросов на странице?Заранее спасибо

Ответы [ 3 ]

16 голосов
/ 18 декабря 2011

Пользователи всегда могут получить доступ к php-скрипту напрямую, но вы можете защитить немного больше, добавив эту проверку в php-скрипт:

if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest')
{
  //CODE HERE
}

Кроме того, как упоминал Евгений Рик, вы можете отправить токен.

2 голосов
/ 18 декабря 2011

Это принципиально невозможно.

Необходимо ограничить количество запросов на один IP-адрес на сервере.

0 голосов
/ 18 декабря 2011

Стандартный способ сделать это - отправить некоторый (зависящий от времени) токен со страницей, содержащей код AJAX, а затем отправить токен вместе с вызовом AJAX. Пользователи, напрямую использующие URL AJAX, не будут знать текущее значение токена.

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