---
title: "Sanitizer API — очистка вставленного HTML"
description: "Как Blok очищает сохранённый и вставленный контент и как объявить собственный sanitizer-конфиг инструмента."
source: https://blokeditor.com/ru/docs/sanitizer-api/
lastmod: 2026-09-07
---

Фреймворк JavaScript

Расширение и система Очистка

На этой странице sanitizer.clean(taintString, config)

# Sanitizer API: как очищается контент

Очистка HTML-контента для защиты от XSS-атак. В `static get sanitize()` инструмента поле данных можно сопоставить со строкой `'plaintext'` вместо карты тегов — это помечает поле как литеральный исходный текст, а не разметку.

[Редактировать на GitHub](https://github.com/JackUait/blok/blob/main/docs/src/components/api/api-data.ts)

### Как получить экземпляр редактора

Методы ниже вызываются на редакторе, созданном через new Blok(). Они доступны после того, как разрешится editor.isReady.

TypeScript

```
// You already hold the instance returned by the constructor.
const editor = new Blok({ holder: 'editor' });
await editor.isReady;

// Call any API method on it.
editor.caret.setToLastBlock('end');
```

## Методы

### sanitizer.clean(taintString, config)

string

Очистить HTML-строку по переданной конфигурации санитайзера. Записи `'plaintext'` — это директивы уровня поля, а не правила для тегов, поэтому `clean()` отфильтровывает их из конфигурации до разбора. Внесение `href`/`src` в список разрешённых разрешает сам атрибут, а не его схему — `clean()` дополнительно отбрасывает URL-значения, которые могут выполниться (`javascript:`, `data:text/html`, `data:image/svg+xml`), поэтому разрешённая ссылка никогда не вернётся живой ссылкой на скрипт.

Когда использовать

Удаляет нежелательный HTML по набору правил перед вставкой внешнего контента — защита при вставке и импорте строк.

TypeScript

```
const dirtyHtml = '<script>alert("xss")</script><p>Hello</p>';
const clean = editor.sanitizer.clean(dirtyHtml, {
  p: true,  // Allow <p> tags
  b: true   // Allow <b> tags
});
// Returns: '<p>Hello</p>' (script tag removed)

const link = editor.sanitizer.clean('<a href="javascript:alert(1)">x</a>', { a: { href: true } });
// Returns: '<a>x</a>' (executable scheme dropped, text kept)
```

## Свойства

| Свойство | Тип | Описание |
| --- | --- | --- |
| `plaintext` | `'plaintext'` | Правило санитайзера уровня поля, которое инструмент объявляет в `static get sanitize()`, и часть объединения `SanitizerRule`, экспортируемого из корня пакета. Очистка — это разбор HTML: она кодирует одиночные `<`/`&` в сущности и отбрасывает текст, похожий на непарный закрывающий тег, — невосстановимая порча для поля, хранящего литеральный исходный текст, например `code` у блока кода. Поле, помеченное `'plaintext'`, пропускает очистку тегов, проход по схемам URL и глобальный санитайзер уровня редактора и проходит цикл туда-обратно байт в байт. Оно объявлено обычным строковым литералом, а не Symbol, поэтому конфигурации sanitize у инструментов переживают JSON и `structuredClone`. |

TypeScript

```
// A tool declares which of its data fields are markup and which are literal text
class CodeTool {
  static get sanitize() {
    return {
      code: 'plaintext',            // literal source — never HTML-parsed
      caption: { b: true, i: true } // markup — sanitized against these tags
    };
  }
}
```
