Большинство фреймворков AJAX отправляют заголовок X-Requested-With:
.Предполагая, что вы работаете в Apache, вы можете использовать функцию apache_request_headers () , чтобы получить заголовки и проверить их / проанализировать.
Несмотря на это, ничто не мешает кому-то вручную установитьэтот заголовок - нет реального 100% надежного способа обнаружить это, но проверка этого заголовка, вероятно, примерно настолько близка, насколько вы получите.
В зависимости от того, что вам нужно защищать и почему, вы можете подумать о необходимостинекоторая форма аутентификации и / или использование уникальных хеш / сессий PHP, но это может все же быть взломано любым, кто немного знает о Javascript.
Как идея вещей, которые вы можете проверить, если выпроверьте все это перед обслуживанием, которое вы запрашиваете, оно даст определенную степень уверенности (хотя и не так много, ни один, если кто-то намеренно пытается обойти вашу систему):
- Сохраните уникальный хэш в значении сеанса итребует, чтобы он был возвращен вам с помощью вызова AJAX (в файле cookie или параметре запроса), поэтому можносравните их на стороне сервера, чтобы убедиться, что они совпадают
- Проверьте, установлен ли заголовок
X-Requested-With:
и имеет ли оно значение - Убедитесь, что заголовок
User-Agent:
совпадает с заголовкомначало сеанса
Чем больше вещей вы проверяете, тем больше шансов, что злоумышленнику будет скучно и он сдастся, прежде чем он все сделает правильно.Точно так же, чем больше / больше системных ресурсов потребуется для обслуживания каждого запроса ...