Перейти к содержимому
Все статьи
БезопасностьИИ

Сторонний виджет на сайте: какие данные он может видеть

·27 октября 2026 г.· 7 мин чтения
Не уверены, что сайт чистый?Проверить сайт на взлом

Проверку стороннего виджета начните со способа подключения: его JavaScript выполняется внутри вашей страницы или компонент открыт в отдельном документе. Затем составьте список доступных ему данных и фактических получателей. HTTPS защищает соединение, но не определяет, какие поля разрешено читать подключённому коду и какие сведения вы сами передаёте поставщику.

Видимый блок и исполняемый код — разные части проверки

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

OWASP рассматривает выполнение стороннего JavaScript как отдельный риск: код получает возможности в контексте включившего его приложения. Размещение файла у поставщика не создаёт автоматически изоляцию после загрузки. Поэтому оценивать нужно подключение, доступные данные и разрешённые действия вместе.

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

Запишите четыре пути появления данных у поставщика

Путь данныхУчебный примерЧто фиксирует проверяющийВопрос владельцу интеграции
Прямая настройкаВиджету передают имя и служебный номер клиентаКакие поля заданы в настройке подключенияНужны ли оба поля для выбранной функции
Доступ к страницеКод работает рядом с формой заявкиГде исполняется код и какие сведения есть в документеМожно ли убрать его с чувствительного раздела
Обмен между компонентамиСтраница передаёт сообщение встроенному окнуОтправитель, получатель и согласованный состав сообщенияКто проверяет допустимые поля и назначение сообщения
Сетевые событияЗагрузка компонента и отправка учебного обращенияАдрес получателя, событие и состав разрешённого тестового запросаКакое назначение у каждого получателя

Таблица не утверждает, что все четыре пути используются каждым виджетом. Она задаёт вопросы для одного конкретного подключения. Необнаруженный путь и технически исключённый путь отмечайте по-разному: отсутствие события в коротком просмотре ещё не устанавливает невозможность его появления.

Начните с явных настроек. Передача полного объекта клиента ради двух нужных значений расширяет объём раскрытия без объяснимой цели. Подготовьте отдельный согласованный набор полей и задайте владельца, который отвечает за его изменения. Комментарию «так удобнее разработчику» не стоит заменять перечень действительно необходимых данных.

Определите, где проходит браузерная граница

Согласно описанию same-origin policy на MDN, взаимодействие документов и скриптов ограничивается их origin — сочетанием протокола, имени хоста и порта. Это помогает понять разницу между кодом внутри основного документа и содержимым, встроенным с другого origin. Чужой адрес исходного файла сам по себе не делает исполняемый на вашей странице скрипт отдельным документом.

Встраивание через iframe с другим origin способно ограничить прямой доступ к документу родителя. Однако основной сайт может сам передавать сведения встроенному компоненту. Тогда проверяют этот обмен, а также код, который остаётся в основном документе. Наличие iframe на странице не подтверждает, что вся интеграция изолирована таким способом.

Если поставщик предлагает несколько вариантов подключения, запросите описание границ каждого. Сравните требуемые функции с тем, что необходимо открыть компоненту. Выбор отдельного документа имеет смысл, когда приложение действительно сохраняет предусмотренные ограничения; его название в инструкции не заменяет проверки реализации.

Наблюдайте предусмотренные действия на искусственных значениях

Для проверки подготовьте различимые учебные значения: одно для поля заявки, другое для профиля, третье для текста обращения. Запишите, где каждое появилось и какое действие должно было его передать. Это позволяет обсуждать состав обмена без выгрузки настоящей карточки клиента в отчёт.

  1. Откройте согласованную тестовую страницу без реальных клиентских данных и определите способ подключения компонента.
  2. Зафиксируйте получателей при обычной загрузке, не совершая дополнительных действий.
  3. Повторите проверку для предусмотренных событий: открытия блока, заполнения учебной формы и разрешённого тестового обращения.
  4. Сопоставьте найденные поля с утверждённым перечнем; отдельно отметьте неизвестное назначение или лишнее значение.
  5. Сохраните результаты без паролей, токенов и полных диагностических выгрузок; назначьте владельцев обнаруженных вопросов.

Сетевое наблюдение показывает то, что произошло в выбранном сеансе. Оно не раскрывает автоматически всю дальнейшую обработку на стороне поставщика, срок хранения и перечень его подрядчиков. Эти сведения получают из документации и условий сервиса. По доменному имени или расположению одного сетевого узла нельзя достоверно восстановить всю цепочку обработки.

Ограничьте и сам отчёт. Из запроса для обсуждения может быть достаточно названия поля и назначения события. Не прикладывайте целиком заголовки авторизации или данные рабочего кабинета. Порядок отбора безопасных диагностических сведений описан в статье о секретах в логах приложения.

Свяжите ограничения с функцией компонента

Для каждой спорной передачи выберите действие: исключить поле, отключить функцию, изменить размещение или запросить разъяснение поставщика. Если компонент нужен только на публичной странице контактов, его присутствие в административном разделе требует отдельного обоснования. Настройка «включить на всех страницах» слишком широка, чтобы принимать её без проверки.

Политика CSP может ограничивать разрешённые источники загрузки и обращения, но не объясняет сама по себе необходимость каждого поля. Разрешённый к выполнению код также нуждается в оценке. Внедрение политики без случайной остановки нужных функций разобрано отдельно — как проверять CSP до блокировок.

Добавьте условия обновления. Кто меняет подключение, как команда узнаёт о новом получателе и какие сценарии повторно проверяет после обновления? Однократный допуск относится к наблюдавшейся конфигурации. Он не является бессрочным разрешением на любое последующее изменение функций или состава передаваемых сведений.

Завершите допуск записью решения

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

Если от компонента решили отказаться, проверьте места подключения и оставшиеся настройки интеграции. Удалённая кнопка не доказывает прекращение загрузки кода или всех фоновых обращений. Отдельно разберите судьбу уже переданных сведений по условиям поставщика: исчезновение блока на вашем сайте не подтверждает их удаление в другой системе.

В аудите безопасности сайта такой подход даёт проверяемый результат: какая функция допущена, какие сведения для неё разрешены и на каких наблюдениях основано решение. Он подходит для чата, аналитического блока и других сторонних компонентов, сохраняя отдельную проверку каждого подключения вместо общего вывода «виджеты безопасны».

Вопросы и ответы

Что такое виджет на сайте?

Это встроенный компонент, например блок чата или онлайн-записи. Его видимая часть не описывает весь способ работы: рядом может загружаться внешний код и выполняться обмен данными. Для оценки безопасности нужно рассмотреть конкретное подключение.

Чем опасны сторонние скрипты?

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

Достаточно ли iframe для безопасного подключения?

Отдельный документ с другим origin ограничивает прямое взаимодействие с родительской страницей, но не отменяет настроенный обмен между ними. Проверьте, что остаётся в основном документе и какие сведения передаются внутрь. Один обнаруженный iframe не подтверждает безопасность всей интеграции.

Нужна помощь с проектом?

Обсудим задачу и предложим решение — от сайта до SaaS и защиты.

Связаться