У меня есть сайт с некоторыми php-скриптами, некоторые из них называются в ajax.
Я хотел бы запретить моему сайту некоторых злонамеренных пользователей, которые пытались бы вызывать и использовать эти сценарии с другого сайта или с фиктивного локального сайта.
Я думал о фильтрации доменного имени, но с помощью некоторых инструментов, таких как EasyPHP и менеджеры виртуальных хостов, вы можете запустить локальный веб-сайт, обманув доменное имя.
Я также думал о фильтрации IP-адреса вызывающего абонента, но думаю, что если вы можете обмануть имя «домена», вы также можете обмануть IP-адрес localhost.
Итак, как я могу сделать это, чтобы эта система безопасности работала нормально?
То, на что вы ссылаетесь, называется Подделка межсайтовых запросов.
Вызов одного из ваших сценариев с другого сайта будет запрещен политика того же происхождения. Принимая это во внимание и тот факт, что запрос AJAX может содержать только несколько заголовков без согласия сервера через Обмен ресурсами между источниками, Вы можете отправить собственный заголовок HTTP и проверить этот заголовок на стороне сервера из PHP. Если заголовок отсутствует, скорее всего, запрос не приходит из вашего собственного приложения.
Вы также можете потребовать, чтобы каждый клиент отправлял уникальный токен для каждого запроса, чтобы получить данные. Самый распространенный используемый метод токенов называется Шаблон токена синхронизатора.
Извините за длинный список ссылок, включенных в этот ответ, но я считаю, что тема деликатная и, как и любая проблема безопасности, я думаю, что очень важно прочитать как можно больше из многих источников, чтобы понять проблема с разных точек зрения, доступные решения и выбрать правильный вариант для вашего случая использования.
Других решений пока нет …