Ограничения безопасности

Использование библиотеки Axe-core для автоматизированной проверки доступности связано с рядом ограничений безопасности, обусловленных как особенностями браузерной среды, так и принципами изоляции веб-приложений. Эти ограничения определяют условия, в которых библиотека может анализировать DOM-структуру, взаимодействовать со страницей и выполнять правила проверки доступности.

Axe-core не выполняет сетевые операции, не отправляет данные на внешние серверы и работает исключительно внутри текущего документа браузера. Несмотря на это, при интеграции в различные среды тестирования необходимо учитывать ограничения политики безопасности браузеров, механизмов изоляции фреймов и особенностей исполнения скриптов.


Изоляция контекста выполнения

Axe-core функционирует внутри JavaScript-контекста страницы. Это означает, что библиотека имеет доступ только к тому DOM-дереву, в котором она была загружена.

Основные последствия такой модели:

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

Библиотека выполняет анализ DOM при помощи стандартных API браузера:

  • document
  • querySelector
  • getComputedStyle
  • MutationObserver

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


Ограничения политики одного источника (Same-Origin Policy)

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

Если на странице присутствуют iframe, загруженные с другого источника, Axe-core не сможет анализировать их содержимое.

Пример

https://example.com
   └ iframe -> https://external-site.com

В данном случае:

  • основной документ доступен для анализа;
  • содержимое iframe недоступно.

При попытке доступа браузер генерирует исключение безопасности.

Практические последствия

Автоматический аудит доступности может быть неполным, если страница содержит сторонние виджеты:

  • рекламные блоки
  • сторонние формы
  • виджеты социальных сетей
  • платежные компоненты

Такие элементы часто загружаются из внешних доменов и остаются вне зоны анализа.


Ограничения при работе с iframe

Даже если iframe принадлежит тому же источнику, его анализ требует отдельной обработки.

Axe-core не выполняет автоматическое сканирование всех вложенных документов. Для каждого iframe необходимо инициировать проверку отдельно.

Причины такого поведения:

  • предотвращение бесконтрольного обхода DOM-деревьев;
  • ограничение потребления ресурсов;
  • соблюдение политики безопасности браузера.

Подход к анализу

При тестировании обычно применяется рекурсивная стратегия:

  1. выполняется проверка основного документа;
  2. обнаруживаются iframe;
  3. для каждого iframe запускается отдельный экземпляр Axe-core.

Ограничения Content Security Policy (CSP)

Многие современные веб-приложения используют Content Security Policy — механизм, ограничивающий выполнение скриптов и загрузку ресурсов.

Некоторые настройки CSP могут препятствовать работе Axe-core.

Возможные проблемы

  1. Запрет inline-скриптов

Axe-core часто внедряется через тестовые инструменты, которые используют inline-код. Если политика запрещает inline-скрипты, библиотека может не выполниться.

  1. Ограничение источников скриптов

Если политика допускает загрузку скриптов только из определённых доменов, динамическая инъекция Axe-core будет заблокирована.

  1. Ограничения sandbox

Некоторые страницы используют атрибут sandbox для iframe. В таком режиме могут быть отключены:

  • выполнение скриптов
  • доступ к родительскому документу
  • взаимодействие между окнами

Пример CSP

Content-Security-Policy:
script-src 'self'

В такой конфигурации скрипты разрешены только из текущего источника.


Ограничения песочницы браузера

Браузеры изолируют выполнение JavaScript-кода, чтобы предотвратить доступ к критическим системным функциям.

Axe-core не имеет доступа к следующим ресурсам:

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

Все вычисления выполняются внутри виртуальной среды браузера.

Это гарантирует безопасность анализа даже при запуске на сторонних страницах.


Ограничения при автоматизированном тестировании

При интеграции Axe-core в инструменты тестирования (например, браузерные драйверы) возникают дополнительные ограничения.

Изоляция WebDriver

В системах автоматизации тестирования существует разделение между:

  • процессом тестирования;
  • процессом браузера.

Axe-core выполняется внутри браузера, а тестовый код — вне его.

Поэтому взаимодействие происходит через мост API WebDriver.

Это накладывает ограничения:

  • невозможность прямого доступа к внутренним структурам браузера;
  • необходимость сериализации данных;
  • ограничения на передачу сложных объектов.

Ограничения динамического DOM

Современные веб-приложения активно используют динамическое обновление интерфейса:

  • виртуальный DOM
  • реактивные фреймворки
  • ленивую загрузку компонентов

Axe-core анализирует DOM в момент запуска проверки.

Если элементы появляются позже, они не будут включены в анализ.

Типичные случаи

  1. отложенная загрузка модальных окон
  2. динамические выпадающие меню
  3. компоненты, создаваемые после пользовательского взаимодействия

В подобных ситуациях требуется повторный запуск проверки.


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

Axe-core не инициирует сложные пользовательские сценарии.

Библиотека не выполняет:

  • клики
  • прокрутку страницы
  • ввод текста
  • наведение курсора

Анализ основан на текущем состоянии интерфейса.

Если доступность элемента зависит от взаимодействия пользователя, то такой элемент может остаться непроверенным.


Ограничения производительности и защитные механизмы

Проверка доступности крупных страниц может требовать значительных вычислительных ресурсов. Поэтому Axe-core реализует защитные ограничения.

Ограничения глубины обхода

Для предотвращения чрезмерной нагрузки библиотека ограничивает:

  • глубину обхода DOM;
  • количество одновременно выполняемых правил.

Тайм-ауты выполнения

Некоторые проверки могут быть прерваны при превышении допустимого времени выполнения.

Это предотвращает зависание браузера при анализе очень больших документов.


Ограничения безопасности при внедрении в сторонние сайты

Иногда Axe-core внедряется в сторонние страницы через расширения браузера или инструменты тестирования.

В таких случаях действуют дополнительные ограничения.

Ограничения расширений браузера

Расширения работают в изолированном контексте:

  • контент-скрипт
  • страничный контекст
  • фоновый процесс

Axe-core должен выполняться именно в контексте страницы, иначе он не получит доступ к DOM.

Изоляция переменных

Переменные страницы и расширения не пересекаются напрямую.

Это предотвращает возможность вмешательства страницы в работу расширения.


Ограничения при анализе теневого DOM

Современные веб-компоненты часто используют Shadow DOM.

Shadow DOM создаёт изолированное поддерево внутри документа.

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

shadowRoot: "closed"

В этом случае содержимое компонента недоступно для анализа.

Axe-core может анализировать только открытые shadow-деревья.


Ограничения безопасности при использовании в CI/CD

При запуске тестов доступности в автоматизированных пайплайнах также возникают ограничения.

Изоляция контейнеров

Тесты часто выполняются внутри контейнеров:

  • Docker
  • виртуальные машины
  • изолированные CI-агенты

Это означает:

  • ограниченные системные ресурсы;
  • ограниченный доступ к сети;
  • изолированную файловую систему.

Хотя Axe-core не зависит от сетевых ресурсов, ограничения среды могут влиять на скорость анализа.


Ограничения доверенной среды выполнения

Axe-core предполагает, что код страницы не вмешивается в процесс проверки.

Однако теоретически возможны ситуации, когда страница:

  • переопределяет стандартные DOM-API;
  • изменяет поведение querySelector;
  • модифицирует глобальные объекты.

Подобные действия могут повлиять на корректность анализа.

В тестовых средах обычно применяется стратегия изоляции:

  • запуск проверок в чистом браузерном экземпляре;
  • отключение сторонних скриптов;
  • использование тестовых сборок приложения.

Ограничения доступа к скрытым элементам

Некоторые элементы страницы могут быть недоступны для анализа из-за особенностей рендеринга.

Примеры:

  • элементы, удалённые из DOM;
  • элементы внутри закрытых компонентов;
  • элементы, загруженные после выполнения проверки.

Axe-core анализирует только те узлы, которые существуют в DOM-дереве на момент запуска.


Ограничения при обработке защищённого контента

Некоторые веб-приложения используют защитные механизмы:

  • DRM-контент
  • защищённые видеоплееры
  • встроенные браузерные компоненты

Такие элементы часто реализованы вне стандартного DOM и не могут быть проверены библиотекой.

Примеры:

  • нативные видеоплееры
  • элементы системного интерфейса браузера
  • защищённые виджеты.

Ограничения при анализе Canvas и WebGL

Axe-core ориентирован на анализ семантической структуры DOM. Графические элементы, отрисованные в canvas или через WebGL, не содержат доступной для анализа структуры.

Поэтому библиотека не может определить:

  • наличие текстовых альтернатив;
  • структуру интерфейса внутри canvas;
  • взаимодействие элементов внутри графической сцены.

В таких случаях доступность должна обеспечиваться дополнительными механизмами:

  • ARIA-атрибутами
  • альтернативным текстовым интерфейсом
  • дополнительной семантической разметкой.

Ограничения безопасности при обработке пользовательских данных

Axe-core не анализирует и не передаёт пользовательские данные.

Библиотека:

  • не собирает персональную информацию;
  • не выполняет сетевые запросы;
  • не хранит данные вне текущего процесса.

Все результаты проверки остаются внутри текущего окружения тестирования.

Это делает Axe-core безопасным инструментом для использования даже в средах с повышенными требованиями к защите данных.