#php #ajax
Подскажите необходимые действия для того, чтобы к файлу, обрабатывающему AJAX-запросы, могли обращаться и получать ответы от него только клиенты сайта. При этом авторизации на сайте не предусмотрено. Как с помощью PHP запретить обращение к файлу через AJAX с других сайтов, скриптов и прочих программ, но при этом оставить возможность доступа для браузера клиента? Как правильно и эффективно применить сессии, чтобы ограничить получение запроса в файл?
Ответы
Ответ 1
Как защитить файл-обработчик от сторонних ajax запросов Никак. Я ищу новые методы. Их нет. Самым подходящим сейчас считаю сессии Это очень смешная идея. Рекомендую почитать про сессии: помните, что сессии можно применять только тогда, когда они нужны самому пользователю, а не для того, чтобы чинить ему препятствия. Ведь он в любой момент может избавиться от идентификатора! Скажем, при проверке на то, что заполняет форму человек, а не скрипт, пользователь сам заинтересован в том, чтобы сессия работала - иначе он не сможет отправить форму! А вот для ограничения количества запросов к скрипту сессия уже не годится - злонамеренный скрипт просто не будет возвращать идентификатор. Следует понимать, что "весь мир" такой ерундой не занимается. Никто никогда не занимается "защитой от посторонних запросов". Чтобы это понять, надо изначально представлять себе базовые принципы функционирования веб сайтов Для сайта любой запрос является "посторонним". Сайт находится на сервере, а запросы к нему приходят от клиента. Для сервера нет "своих" и "чужих" клиентов, они все на одно лицо. Да, сервер может пометить определенного клиента с помощью куки, и отличать от дургих. Но, как говорилось выше, для защиты это делать бессмысленно. Для сервера нет ни малейшей разницы, аяксом к нему пришел запрос, или не аяксом. Для сервера это абсолютно один и тот же НТТР запрос. Поэтому от "аякс запросов" специально никто не защищается. Защищают кнопки от неавторизованного использования, с помощью обычной авторизации и прав доступа. То есть, если есть у пользователя право на кнопку нажать - его запрос обрабатывается. Нет прав - не обрабатывается. А аяксом этот запрос пришел, или голубиная почта принесла - серверу без разницы. Защититься от стороннего "парсинга" также невозмжно. Если кто-то захочет спарсить ваш контент - он попросту придет сюда, на Stack Overflow по-русски, даст ссылку на ваш сайт и попросит код, который будет доставать инфу с него. И этот код ему радостно напишут. К сожалению, вопросы этики и морали занимают программистов в последнюю очередь, а это, увы, единственные преграды, которые стоят в сети перед желанием взять чужое без спросу.Ответ 2
К сожалению, нет однозначного способа предотвратить такие запросы. Обычно в таких случаев перед тем, как отдать опасный JS клиенту, генерируют какой-нибудь access_token, чтобы потом сопоставить его с последующим запросом клиента. Любой современный веб-фреймворк предоставляет простой способ сделать это. На английском Stack Overflow есть несколько вариантов проверок: раз, два. Но они не могут ничего гарантировать Вообще, гуглите cross-domain ajax requests и еще почитайте про Cross-origin resource sharing
Комментариев нет:
Отправить комментарий