Как можно подменить скрипт?
Продвинутые темы
Скрипт можно подменить через XSS (внедрение своего скрипта), компрометацию зависимости (supply chain), MITM (перехват без HTTPS), взлом CDN. Защита: CSP, SRI, HTTPS, аудит зависимостей.
Векторы подмены скрипта
XSS
Внедрение вредоносного скрипта через неэкранированный ввод:
element.innerHTML = userInput; // <script>...</script>Защита: экранирование, CSP.
Компрометация зависимости (supply chain)
Вредоносный код в npm-пакете (взломанный или тайпсквоттинг):
Установили пакет → он содержит вредоносный кодЗащита: аудит (npm audit), lock-файлы, проверка пакетов.
MITM (человек посередине)
Без HTTPS трафик перехватывают и подменяют скрипт по пути:
Защита: HTTPS, HSTS.
Взлом CDN / стороннего скрипта
Скрипт с чужого CDN подменён на источнике:
Защита: Subresource Integrity (SRI) — хеш проверяет целостность:
<script src="https://cdn.com/lib.js"
integrity="sha384-..." crossorigin="anonymous"></script>Если содержимое изменилось (хеш не совпал) — браузер не выполнит.
Compromised build / инъекция при сборке
Вредоносный код добавлен в процессе сборки/деплоя.
Защита (сводно)
- CSP —
script-srcограничивает источники скриптов. - SRI — проверка целостности сторонних скриптов.
- HTTPS/HSTS — против MITM.
- Аудит зависимостей — против supply chain.
- Экранирование ввода — против XSS.
Коротко для собеседования
Скрипт подменяют через: XSS (внедрение — защита экранированием/CSP), компрометацию зависимости/supply chain (вредоносный npm-пакет — аудит, lock-файлы), MITM без HTTPS (перехват — HTTPS/HSTS), взлом CDN (сторонний скрипт — SRI, хеш целостности). Защита: CSP (script-src), SRI (integrity), HTTPS, аудит зависимостей, экранирование.