337просмотров
87.1%от подписчиков
13 марта 2026 г.
Score: 371
Защита от XSS В последнее время в браузеры активно завозят Trusted Types и HTML Sanitizer API. Оба очень полезны для фильтрации содержимого, вставляемого напрямую в HTML. HTML Sanitizer API
// Создаём санитайзер с разрешением только для <b> и <i> тегов
const sanitizer = new HTMLSanitizer({ allowElements: ['b', 'i']
}); const unsafeHTML = '<div onclick="alert('XSS')">Hello <b>World</b></div>'; // Очищаем небезопасный код
const safeFragment = sanitizer.sanitizeFor('div', unsafeHTML); document.body.appendChild(safeFragment); // Hello <b>World</b> Trusted Types API
import DOMPurify from 'https://cdn.jsdelivr.net/npm/dompurify@3.3.1/+esm'; const policy = trustedTypes.createPolicy('myPolicy', { // Очищаем небезопасный HTML код при помощи библиотеки dompurify createHTML: (input) => { return DOMPurify.sanitize(input); }, // JavaScript код и URL'ы оставляем как есть createScript: input => input, createScriptURL: url => url
}); const unsafe = '<img src="x" onerror="alert(1)>"'; document.body.innerHTML = unsafe; // небезопасно, <img src="x" onerror="alert('XSS')">
document.body.innerHTML = policy.createHTML(unsafe); // безопасно, <img src="x"> ⚙️ Поддержка браузерами (HTML Sanitizer, Trusted Types)