Может ли JavaScript безопасно извлекать данные из ненадежных доменов? - PullRequest
0 голосов
/ 30 октября 2019

На моей веб-странице необходимо извлекать данные по инициативе клиента со стороны доменов, которые (иногда **) могут быть ненадежными / контролируемыми злоумышленниками.

Позволяет ли JavaScript [безопасно] извлекать данные* из домена, который может быть ненадежным или контролируемым злоумышленником?

Если да, то что это за функция?


Пояснения / Дополнения / "inb4" s / PS:

* Протокол / формат выборки данных еще не определен;даже не так, как HTTP GET против POST. У меня нет предпочтений в отношении формата данных , и я могу выбрать + реализовать его, как требуется / уместно, включая даже форматы с открытым текстом и разделителями. Нет необходимости использовать JSON .

** Технически , домены (которые могут быть произвольными / определяемыми пользователем!) Иногда должны загружаться через HTTP;эта модель угроз изоморфна извлечению данных с конкурирующих серверов, особенно в контексте роуминга сетевых подключений, не относящихся к VPN. (И да, безопасная обработка указанных ненадежных данных впоследствии выходит за рамки этого вопроса)

XY Проблема"X": ведущим проектом здесь является веб-браузердомашняя страница / приложение, которое будет загружать контент (от настроек и простых виджетов до контента ) из источников, которые могут контролироваться пользователем и могут (по выбору пользователя) находиться даже в доменах, не принадлежащих ICANN (таких каклокальные домены, домены OpenNIC и т. д.) Полностью и ожидаемо / приемлемо, что часть этого контента будет обслуживаться только через TLS и может использоваться для различных целей, начиная от «канареек» (как присутствия MITM, так ипростая проверка конфигурации сети) для прямых данных, зависящих от местоположения. Соединения TLS могут быть или не быть доступными из-за вышеупомянутого набора причин [что домены не определены заранее];и есть контент, который должен / должен / будет загружен, даже несмотря на этот случай.

Это , а не дубликат # 29022794 . У меня нет требования использовать JQuery, и этот вопрос только спрашивает, безопасно ли $.getJSON() использовать на ненадежных URL-адресах (а. это НЕ похоже на ; и b. , даже еслиэто был , этот вопрос будет задавать после основную функцию [которую вызывает JQuery], а не спрашивать, как использовать JQuery как таковой).

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Перенос в по окружности да: XMLHttpRequest представляется безопасным для вызова на ненадежных доменах.

Обоснования:

См. Страница OWASP об уязвимостях AJAX :

  • Не упоминается об угрозах, * для клиента в результате [такого рода] злонамеренно созданного ответа сервера;единственные перечисленные риски на стороне клиента - это инъекции того или иного рода.

См. также этот аналогичный вопрос на бирже стеков безопасности

  • Сам вопрос OP (является ли безопасным синтаксический анализ запроса XMLHttpRequest для сервера, контролируемого злоумышленником, например JSON), обязательно предполагает, что безопасно получить.
  • Два пользователя несколько раз комментировали эту проблему, обсуждая последствия синтаксического анализа указанного ответа, и ни в коем случае не ставили под сомнение это базовое предположение , комментируя только подобные атаки XSS-инъекции с атаками, обсуждаемыми OWASP.
    • ThoriumBR (> член 5y, пользователь стека обмена информацией 2019-го процентиля 2019 года)
    • Ry (участник> 8y, модератор переполнения стека))

Хотя очень трудно «доказать» негатив, особенно в вопросах безопасности, факт наличия в Интернете океана контента, обсуждающего рискив разборе потенциально злонамеренных ответов (предотвращение внедрения XSS), связанных с рисками для таких серверов (CORS) и т. д .;без, по-видимому, даже одного брака обсуждения этого означает, что это, вероятно, не один из рисков.

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

Нет. Вы не можете сделать это в браузере из-за защиты безопасности CORS . Если вы когда-либо нашли его, это ошибка, и браузер исправит ее.

Однако вы можете сделать это на стороне сервера с помощью fetch API

...