#php #ajax #http #get
#php #ajax #http #получить
Вопрос:
У меня есть файл, caller.php , который принимает GET URI, указывающий значение для поиска в базе данных. Затем данные возвращаются в формате JSON с использованием php.
Я хочу защитить caller.php чтобы он был доступен только с другой страницы, get.php с использованием вызова AJAX.
Каков наилучший способ добиться этого?
Ответ №1:
Я хочу защитить caller.php чтобы он был доступен только с другой страницы, get.php с использованием вызова AJAX.
Вы не можете. Вызов AJAX можно легко подделать, как и его происхождение.
На стороне сервера нет надежного способа определить, является вызов Ajax или нет, и откуда он пришел.
Вам нужно защитить свой ресурс Ajax так же, как вы бы защищали обычную страницу — например, через систему авторизации, такую как логин пользователя, и так далее.
Без такой системы авторизации на месте вы должны предположить, что каждый может получить доступ к URL.
Комментарии:
1. Я создал это сообщество Wiki, потому что у этого вопроса есть по крайней мере два дубликата, на которые я ответил, но я не могу найти их прямо сейчас. Ну что ж.
2. SSL в качестве транспорта фактически не применяется в этом случае.
3. @Emil да, удалено. Я уделил слишком много внимания заголовку вопроса
Ответ №2:
Вы могли бы проверить сеанс, чтобы увидеть, авторизован вызов или нет. Запросы AJAX отправят вам файл cookie сеанса PHP. Это предполагает, что caller.php защищен какой-либо системой входа пользователя, которая использует сеансы
Комментарии:
1. 1 для «Ajax-запросы отправят вам файл cookie сеанса PHP» — обычно так и делается
2. Можно ли было бы поместить caller.php вне корневого каталога?
3. Вы имеете в виду из корневого каталога документов вашего веб-сервера?
4. Нет. Вам нужно caller.php общедоступный .. в противном случае выполнение вызова AJAX в браузере, очевидно, не будет работать.