Почему AJAX небезопасен? - PullRequest
       3

Почему AJAX небезопасен?

0 голосов
/ 30 октября 2018

Я новичок в JS и AJAX, и однажды я попробовал междоменный запрос AJAX. После некоторых исследований я обнаружил, что AJAX не может работать над кросс-доменами (изначально), потому что это небезопасно.

Из Википедии: «Эта политика запрещает вредоносному сценарию на одной странице получать доступ к конфиденциальным данным на другой веб-странице через объектную модель документа этой страницы».

Но как AJAX может запрашивать доступ к "конфиденциальным данным", в то время как вы не можете использовать HTTP по умолчанию?

1 Ответ

0 голосов
/ 30 октября 2018

AJAX-запрос - это HTTP-запрос.

AJAX расшифровывается как асинхронный Javascript и XML. Это называется, что после первого API-интерфейса HTTP-клиента на основе браузера XMLHttpRequest.

HTTP-запросы не являются небезопасными по своей природе, но некоторые вещи могут затруднять HTTP-запросы.

Большой вопрос, связанный с запросами Ajax, заключается в том, что по крайней мере в прошлом HTTP-запрос может содержать информацию о сеансе / cookie.

Это означает, что если запросы Ajax не были ограничены в песочницах браузера (междоменный), это может означать, что владелец сайта A может сделать запрос к сайту B от имени пользователя.

Пример: вы вошли в популярную социальную сеть. Ваш браузер использует куки для идентификации вашего входа в сеанс. Я отправляю вам ссылку на evil.example.org. Если межсайтовых ограничений не было, я мог бы создать для вас HTTP-протокол + ваш сеанс в социальной сети и действовать от вашего имени.

Однако это не конец этой истории. Можно делать межсайтовые запросы. Это называется запросом CORS.

НО: способ, которым это работает, заключается в том, что владелец сайта, которому вы хотите сделать запрос, должен разрешить вход. В нашем предыдущем примере это означает, что социальной сети необходимо явно разрешить "evil.example.org «Чтобы сделать такие запросы.

Способ, которым этот сайт дает вам разрешение, - через заголовки CORS.

Другие способы обойти это через:

  • Кадры, размещенные на сайте, к которому вы пытаетесь получить доступ. (с конкретным кодом)
  • прокси под вашим контролем.
  • Если сервер, к которому вы пытаетесь получить доступ, доставляет свое содержимое очень специфическим способом. (опять же, вам нужен контроль над целевым сервером).

Если вы управляете целевым сервером, лучше всего использовать CORS. Если вам не нравится, лучше всего настроить прокси, которым вы управляете.

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