Защита GET-вызова

#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 в браузере, очевидно, не будет работать.