Как защитить уязвимость чтобы она эксплуатировалась но злоумышленник не мог ничего сделать?
DOM и браузер
Чтобы уязвимость эксплуатировалась, но не наносила вреда, применяют глубокую защиту (defense in depth): даже при успешной эксплуатации ограничивают ущерб через минимальные привилегии, изоляцию, короткие токены и мониторинг.
Идея — минимизировать ущерб
Нельзя предотвратить 100% атак, поэтому строят так, чтобы успешная эксплуатация давала минимум:
Принцип наименьших привилегий
Токены/аккаунты с минимальными правами — украли токен только на чтение → нельзя изменять/удалять:
scope: 'read:public' → эксплуатация не даёт доступа к личным даннымКороткий срок жизни токенов
Украденный access token быстро истекает → окно использования мало.
Изоляция и sandbox
- Sandbox (iframe с
sandbox, Web Workers) — вредоносный код изолирован. - CSP — даже внедрённый скрипт не сможет слать данные (
connect-src) или выполниться.
HttpOnly cookie
Токен недоступен JS → XSS не украдёт его.
Мониторинг и отзыв
Детектировать аномалии, быстро отзывать скомпрометированные токены (ротация, чёрный список).
Rate limiting
Ограничить частоту → массовая эксплуатация затруднена.
Defense in depth
Много слоёв защиты: если один пробит, другие ограничивают ущерб. Даже при эксплуатации злоумышленник упирается в минимальные права, изоляцию, короткие токены и мониторинг.
Коротко для собеседования
Чтобы эксплуатация не наносила вреда — глубокая защита (defense in depth): принцип наименьших привилегий (минимальный scope токенов), короткий срок жизни, изоляция (CSP connect-src, sandbox), HttpOnly (XSS не украдёт токен), мониторинг и быстрый отзыв, rate limiting. Много слоёв: даже при пробитии одного ущерб ограничен.