Язык веба
JavaScript выполняется в каждом браузере и на серверах (Node.js). Без него не обходится ни один современный сайт — в том числе это приложение.
При чём тут безопасность: большинство веб-атак — XSS, CSRF, кража сессий — связаны с JavaScript. Чтобы понять и найти их, нужно читать JS-код.
Модель безопасности браузера
Браузер ограничивает JavaScript:
- Same-Origin Policy — скрипт одного сайта не может читать данные другого;
- CORS — сервер явно разрешает, какие сайты могут к нему обращаться;
- Content Security Policy — сайт указывает, откуда можно загружать скрипты.
XSS опасен как раз тем, что чужой скрипт выполняется «от имени» сайта.
Опасные места
innerHTMLиevalс данными пользователя — путь к XSS.- Хранение токенов там, откуда их легко украсть скриптом.
- Проверки только на клиенте: любой может обойти их, отправив запрос напрямую. Проверять нужно на сервере.
Цепочка поставок npm
Проекты на JavaScript тянут сотни пакетов из npm. Уязвимый или вредоносный пакет — даже вложенный глубоко в зависимости — попадает в приложение.
Защита: фиксировать версии (lock-файл), проверять уязвимости (npm audit), не ставить пакеты с подозрительными названиями, минимизировать зависимости.
С чего начать
- Основы языка и работа с DOM в браузере.
- Инструменты разработчика браузера: консоль, вкладка «Сеть».
- Как устроены cookie,
localStorageи заголовки безопасности. - Учебные уязвимые приложения, например OWASP Juice Shop, чтобы увидеть XSS своими глазами — легально.
Главное за урок
- JavaScript — язык браузера и Node.js, основа веб-атак и защиты.
- Same-Origin Policy, CORS и CSP ограничивают скрипты.
- Проверяй всё на сервере и следи за зависимостями npm.