Я отправляю данные на сайт 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, не будут знать текущее значение токена.