Какие знаешь способы защиты от XSS

«Какие знаешь способы защиты от XSS» — вопрос из категории Безопасность, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

  1. Экранирование (escaping) – преобразование спецсимволов в HTML-сущности (например, <&lt;).
    Пример:
    const escaped = str.replace(/</g, '&lt;').replace(/>/g, '&gt;');
  1. Использование textContent вместо innerHTML – предотвращает интерпретацию HTML/JS.
    element.textContent = userInput; // безопасно
  1. Content Security Policy (CSP) – HTTP-заголовок, ограничивающий источники скриптов, стилей и т.д.
    Пример заголовка:
    Content-Security-Policy: default-src 'self'
  1. Библиотеки для санитизации – например, DOMPurify:
    const clean = DOMPurify.sanitize(userInput);
  1. HttpOnly и Secure флаги для кук – защищает от кражи кук через JS.

  2. Валидация и ограничение ввода – например, разрешать только определенные символы.

Для React/Vue/Angular: фреймворки автоматически экранируют данные в шаблонах, но важно избегать dangerouslySetInnerHTML (React) или v-html (Vue) без санитизации.