Spec-Zone.ru › Web APIs

API «Trusted Types»

Ограниченная доступность

Эта функция не относится к Baseline, так как не работает во всех широко используемых браузерах.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна в Web Workers.

API «Trusted Types» предоставляет веб-разработчикам возможность защитить небезопасные части API DOM от атак типа межсайтовый скриптинг (XSS).

Концепции и использование

Атаки XSS, основанные на клиентской стороне или DOM, происходят, когда данные, контролируемые пользователем (например, вводимые в поле формы), попадают в функцию, которая может выполнить эти данные. Такие функции известны как стоки инъекций. Атаки DOM-XSS возникают, когда пользователь может ввести произвольный JavaScript-код, который выполняется одной из этих функций.

API «Trusted Types» блокирует небезопасные стоки инъекций, требуя обработки данных перед передачей их в одну из этих функций. Если вы используете строку, браузер сгенерирует TypeError и предотвратит использование функции.

API «Trusted Types» работает вместе с Политикой безопасности контента с директивами trusted-types и require-trusted-types-for.

Стоки инъекций

API «Trusted Types» блокирует стоки инъекций, которые могут служить вектором атак DOM-XSS. Стока инъекций — это любая функция Web API, которая должна вызываться только с надёжными, проверенными или очищенными данными. Примерами стоков инъекций являются:

  • Функции, вставляющие HTML в документ, такие как Element.innerHTML, Element.outerHTML или Document.write().
  • Функции, создающие новый документ того же происхождения с управляемым вызывающим элементом разметкой, такие как DOMParser.parseFromString().
  • Функции, выполняющие код, такие как eval().
  • Сеттеры для атрибутов Element, принимающих URL кода для загрузки или выполнения.

API «Trusted Types» заставит вас обработать данные перед передачей их в стоку инъекций вместо использования строки. Это гарантирует надёжность данных.

Политики Trusted Types

Политика — это фабрика для Trusted Types. Веб-разработчики могут указать набор политик, используемых для создания типизированных объектов, которые формируют надёжную базу кода для валидных объектов Trusted Type.

Интерфейсы

TrustedHTML

Представляет строку для вставки в стоку инъекции, которая будет отображаться как HTML.

TrustedScript

Представляет строку для вставки в стоку инъекции, которая может привести к выполнению скрипта.

TrustedScriptURL

Представляет строку для вставки в стоку инъекции, которая будет обработана как URL внешнего ресурса скрипта.

TrustedTypePolicy

Определяет функции, используемые для создания вышеперечисленных объектов Trusted Type.

TrustedTypePolicyFactory

Создаёт политики и проверяет, что экземпляры объектов Trusted Type были созданы с помощью одной из политик.

Примеры

В примере ниже мы создаём политику, которая будет создавать объекты TrustedHTML с помощью TrustedTypePolicyFactory.createPolicy(). Затем мы можем использовать TrustedTypePolicy.createHTML() для создания очищенной строки HTML, которую можно вставить в документ.

Очищенное значение можно использовать с Element.innerHTML, чтобы гарантировать, что новые элементы HTML не могут быть внедрены.

<div id="myDiv"></div>
const escapeHTMLPolicy = trustedTypes.createPolicy("myEscapePolicy", {
  createHTML: (string) =>
    string
      .replace(/&/g, "&amp;")
      .replace(/</g, "&lt;")
      .replace(/"/g, "&quot;")
      .replace(/'/g, "&apos;"),
});

let el = document.getElementById("myDiv");
const escaped = escapeHTMLPolicy.createHTML("<img src=x onerror=alert(1)>");
console.log(escaped instanceof TrustedHTML); // true
el.innerHTML = escaped;

Узнайте больше об этом примере и других способах очистки входных данных в статье Защита от уязвимостей DOM-XSS с помощью Trusted Types.

Спецификации

Спецификация
Trusted Types

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
Trusted_Types_API 83 83 Нет 69 Нет 83 Нет 59 Нет 13.0 83

См. также

  • Защита от уязвимостей DOM-XSS с помощью Trusted Types
  • Полифил Trusted Types (также доступен как пакет npm)

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Trusted_Types_API

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API