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