Когда возможны инъекции вредоносного кода

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

Ответ

Инъекции возможны при небезопасной обработке пользовательского ввода. Основные сценарии:

  1. XSS (Cross-Site Scripting) - когда неэкранированный пользовательский ввод попадает в DOM:
// Опасный код
element.innerHTML = userInput; // Может содержать <script>alert('hack')</script>
  1. SQL-инъекции - при формировании SQL-запросов из строковых данных:
// Уязвимый запрос
db.query(`SELECT * FROM users WHERE login = '${userInput}'`);
  1. Template Injection - при динамической генерации шаблонов:
// AngularJS уязвимость
$scope.$eval(userInput);

Меры защиты:

  • Экранирование (escape) спецсимволов
  • Использование параметризованных запросов
  • Content Security Policy (CSP)
  • Санитизация через DOMPurify
  • Ограничение eval(), new Function()