Intereting Posts

разрешать запросы ajax для перекрестных доменов

В моем проекте мне нужно разрешить другим отправлять ajax-запросы на мой скрипт. Таким образом, внешние запросы могут поступать с других сайтов и доменов и, возможно, из расширений браузера.
Я добавил просто эти две строки в верхней части моего скрипта, чтобы они это сделали:

header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Methods: GET, POST'); 

Теперь мой вопрос заключается в следующем: есть ли какое-либо соображение безопасности, которое я пропустил? делает это простое решение серьезными проблемами?
Если да, то какое лучшее решение?

Спасибо за ответ.

Как уже упоминалось выше, любой пользователь может отправить запрос на вашу страницу в любое время: поэтому основные проблемы безопасности, которые вам нужны, – это проверка ввода пользователя и раскрытие только информации, доступной для общественного потребления. Но это относится ко всем сценариям.

Два основных вопроса, на которые вам нужно сосредоточиться (после проверки ввода пользователя):

  1. У вас может возникнуть проблема – пользователи получают информацию в свои скрипты. В зависимости от браузера (и даже между вкусами одного и того же браузера) существуют разные правила безопасности, которые мешают им вернуть информацию. Общим решением для этого является предоставление информации обратно как «JSONP», которая должна обернуть ваше возвращаемое значение как вызов функции, который может быть выполнен клиентом. Вот краткий пример (взято из http://www.geekality.net/2010/06/27/php-how-to-easily-provide-json-and-jsonp/ ). Чтобы заблокировать его, вы можете настаивать на том, что все запросы JSONP и отклонить любого, кто не отправляет функцию обратного вызова.

,

 <?php header('content-type: application/json; charset=utf-8'); $data = array(1, 2, 3, 4, 5, 6, 7, 8, 9); echo $_GET['callback'] . '('.json_encode($data).')'; ?> 
  1. Кто-то злоупотребляет вашим сервисом, позвонив слишком регулярно. Решения для этого – захватить IP-адрес и отклонить, если вы получаете слишком много вызовов с IP-адреса. Не уверен, но это начало.

Следует учитывать и другие факторы:

  • cookie и другие заголовки, установленные вашим скриптом, вероятно, будут проигнорированы
  • то же самое относится к сеансам

Как сказали zerkms, если они просто «перейдут» на вашу php-страницу, они смогут увидеть, что бы это ни звучало. Если это возможно (не уверен, что это так), это также позволит нежелательным людям создавать свои собственные формы даже на локальном хосте и отправлять их через AJAX, чтобы получить ответы, которые они хотят. Если с вами все в порядке, и информация неоднозначна / безвредный … Тогда я полагаю, что это будет «безопасно». Это НЕ нормально использовать / передавать конфиденциальную информацию

 private function set_headers() { header("HTTP/1.1 ".$this->_code." ".$this->get_status_message()); header("Content-Type:".$this->_content_type); header("Access-Control-Allow-Origin: *"); }