У меня есть несколько страниц, настроенных так, чтобы они отвечали только на запросы ajax. Дело в том, что как я могу настроить его так, что если кто-то попытается отправить запросы через окно браузера, то, набрав их, они не запускаются и запускаются только при вызове ajax. Страницы находятся в php здесьУбедитесь, что ваша страница не запрашивается через ajax?
ответ
Нет никакого надежного способа отличить запрос AJAX от обычного запроса. Некоторые библиотеки, такие как jQuery, добавят к запросу дополнительный HTTP-заголовок X-Requested-With: XMLHttpRequest
, но другие могут не работать. Вы можете подделать запрос AJAX, используя объекты низкого уровня, предоставляемые браузером, которые выглядят точно так же, как и обычный запрос, поэтому не полагайтесь на многое.
Никогда не думал об этом - пока я просто поставлю чеки для дополнительных заголовков. – Ali
@DarinDimitrov, могу я попросить вас взглянуть на http://stackoverflow.com/questions/11548965/file-get-contents-or-curl-way-nothing-works-in-internet-server-though-thos на php get_file_contents() и curl() проблема? –
define('XHR', (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'));
Если вы настраиваете http-заголовок JS (автоматически выполняется в jQuery), используйте эту константу.
HTTP-заголовки легко подделать. Это только замедлит кого-то, а не остановит их. – James
замедление их - это то, что вы хотите. Чем труднее это делать, тем менее вероятно, что люди это сделают. Замки на дверях/окнах и т. Д. Не помешают людям проникнуть в ваш дом, но они будут менее склонны. – Richard
Вся информация, которую вы могли проверить (заголовки, реферер и т. Д.), Поступает из браузера и может быть подделана.
Если пользователь правильно аутентифицирован (например, через файл cookie + токен данных), вы не подвергаете больше своей системе через окно браузера, чем обычное использование ajax.
AJAX сделан внутри окно браузера. Я предполагаю, что вы хотели, чтобы люди не обращались к нему, набрав URL-адрес в браузере. Вы можете просто использовать POST. Кто-то должен написать HTML для доступа к вашей странице.
Вы также можете отправить запрос в формате JSON, добавить настраиваемый заголовок и т.д.
Если вызов Ajax URL вручную (или инструмент) может сделать что-то опасное на сервере нет solution.If его для безопасности причины, по которым вам необходимо защитить код, который обрабатывает вызов ajax. Разрешайте только те, которые не могут навредить.
Согласен, нет способа блокировать его, поэтому вместо этого исправьте свою систему, чтобы кто-то это делал, это не проблема. – JAL
Там нет такой стабильный путь для этого
- 1. android - не открывая веб-просмотр, убедитесь, что страница запрашивается
- 2. убедитесь, что выход ajax обновлен
- 3. Убедитесь, что ваша программа запускается в безопасном режиме Windows
- 4. clientaccesspolicy.xml не запрашивается через HTTPS
- 5. Убедитесь, что страница PHP может быть вызвана только через AJAX с моей страницы
- 6. WebMatrix - Убедитесь, что страница хранится в HTTPS?
- 7. Убедитесь, что страница правильно загружена в Python
- 8. Убедитесь, что страница перезагружена при возврате
- 9. Убедитесь, что страница была запрошена определенной программой
- 10. Убедитесь, что страница всегда загружается в iframe
- 11. Bootstrap popover работает с html, но не запрашивается веб-страница
- 12. Убедитесь, что веб-страница не кэширована, во всех браузерах
- 13. Что означает API для понимания, где ваша страница пронеслась?
- 14. Apache Загрузка: Убедитесь, что страница была просмотрена перед загрузкой
- 15. Сообщать страницу, если запрашивается другая страница
- 16. Microsoft CRM не смог войти в систему. Убедитесь, что ваша запись пользователя
- 17. убедитесь, что запрос ajax не срабатывает несколько раз
- 18. Когда ваша веб-страница может спать
- 19. Убедитесь, что шаблон не соответствует
- 20. Убедитесь, что переменные не прошли
- 21. PHP по-разному, когда страница не запрашивается у браузера
- 22. Убедитесь, что URI действителен
- 23. Что происходит, когда запрашивается сервлет?
- 24. Страница не запрашивается в пользовательских приложениях электронной коммерции
- 25. Favicon.ico не запрашивается
- 26. Facebook Статистика страницы (когда это не ваша страница)
- 27. Проверьте, чтобы увидеть, если страница вызывается через Ajax в Laravel
- 28. Ошибка Heroku - ваша страница не может быть подана
- 29. Классическая страница ASP-сайта не отвечает, но работает, если страница запрашивается на сервере
- 30. HTTP-запрос Ajax через HTTPS Страница
В дополнение к поиску заголовка, вы можете отправить правильный тип контента как 'приложения/json', который подскажет, чтобы загрузить по крайней мере в Firefox. Он * может * работать в качестве 5-секундного сдерживающего фактора: P – alex
Как уже упоминалось другими, имейте в виду, что эти вещи можно подделать. –