Intereting Posts
Что означает переменная $ this в PHP? Манипулировать строку URL, добавляя параметры GET Как сохранить форматирование пробелов с помощью PHP / HTML? Возможно ли PhpStorm автоматически заполнять поле БД в виде строки в файле PHP? laravel вставить новую строку, которая имеет ключ из другой таблицы и нулевые столбцы Расписание команд в Ларавеле Как проверить методы контроллера Laravel 5 Как устранить ошибку « file_get_contents (/var/www/laravel/.env): не удалось открыть поток: нет такого файла или каталога»? Как настроить php.ini для использования gmail в качестве почтового сервера Много-To-One с несколькими целевыми объектами Могут ли пространства имен PHP содержать переменные? после изменения documentroot, xampp все еще использует по умолчанию phpmyadmin Что делает обертывание процедурного блока в фигурных скобках в php? Codeigniter: Столбец 'id' в порядке заказа неоднозначен Как преобразовать PDF-файл в HTML в PHP?

Проверка XMLHttpRequest в php

Я отправляю данные на сайт 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 ждал их электронной почты и запустить тысячу запросов на странице? заранее спасибо

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

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

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

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

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

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