Проверить, что ваша страница не запрашивается через ajax? - PullRequest
2 голосов
/ 11 июля 2010

У меня настроено несколько страниц, чтобы они отвечали только на запросы ajax.Дело в том, как я могу настроить его так, чтобы, если кто-то пытается отправить запросы через окно браузера, то есть, набирая их, они не запускаются и запускаются только при выполнении вызова ajax.Страницы в php здесь

Ответы [ 6 ]

12 голосов
/ 11 июля 2010

Нет надежного способа отличить AJAX-запрос от обычного.Некоторые библиотеки, такие как jQuery , добавляют к запросу дополнительный HTTP-заголовок X-Requested-With: XMLHttpRequest, но другие могут этого не делать.Вы можете подделать AJAX-запрос, используя низкоуровневые объекты, предоставляемые браузером, которые выглядят точно так же, как обычный запрос, поэтому не полагайтесь на многое.

5 голосов
/ 11 июля 2010
define('XHR', (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'));

Если вы устанавливаете заголовок http с помощью JS (автоматически выполняется в jQuery), используйте эту константу.

2 голосов
/ 11 июля 2010

Если вызов ajax url вручную (или инструментом) может сделать что-то опасное на сервере, решения не существует. Если по соображениям безопасности вам необходимо защитить код, обрабатывающий вызов ajax. Допускайте только тех, кто не может причинить вреда.

2 голосов
/ 11 июля 2010

AJAX выполняется внутри окна браузера.Я предполагаю, что вы хотели запретить людям доступ к нему, введя URL в браузере.Вы можете просто использовать POST.Кто-то должен написать HTML для доступа к вашей странице.

Вы также можете отправить запрос в формате JSON, добавить настраиваемый заголовок и т. Д.

2 голосов
/ 11 июля 2010

Вся информация, которую вы можете проверить (заголовки, реферер и т. Д.), Поступает из браузера и может быть подделана.

Если пользователь правильно аутентифицирован (например, через cookie + aтокен данных) вы не подвергаете свою систему большему воздействию через окно браузера, чем обычное использование ajax.

0 голосов
/ 12 июля 2010

Нет такого стабильного способа для этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...