XSS (Cross-Site Scripting) — это тип атаки на веб-приложения, при котором злоумышленник внедряет вредоносный скрипт (обычно JavaScript) в веб-страницу, которую просматривает пользователь. Это позволяет атакующему выполнять произвольный код в контексте браузера жертвы, что может привести к краже данных, угону сессий или изменению содержимого страницы.
🚩Виды XSS-атак
🟠Stored XSS (Хранимый XSS)
Вредоносный код сохраняется в базе данных или другом постоянном хранилище. Например, пользователь вводит в комментарий
<script>...</script>, который сохраняется в БД и выполняется при просмотре комментариев. 🟠Reflected XSS (Отражённый XSS)
Вредоносный код передаётся в запросе и немедленно отображается без обработки. Например, если строка запроса
?search=<script>alert('XSS')</script> отображается на странице без фильтрации, скрипт выполнится. 🟠DOM-based XSS
Возникает, когда JavaScript на клиенте изменяет DOM, используя входные данные, не проверяя их безопасность. Например, если код
document.write(location.hash); вставляет содержимое URL-хэша (#<script>alert('XSS')</script>) в страницу, скрипт выполнится. 🚩Последствия XSS
Кража cookies и сессионных данных.
Фишинг-атаки (изменение содержимого страниц).
Выполнение произвольных действий от лица пользователя.
Перенаправление на вредоносные сайты.
🚩Как защитить приложение от XSS
🟠Экранирование (escaping) выходных данных
Используйте
htmlspecialchars() (PHP), encodeURIComponent() (JS) или аналогичные методы для предотвращения исполнения HTML-кода. 🟠Фильтрация и валидация входных данных
Проверяйте и ограничивайте вводимые пользователем данные (например, запрещайте
<script>). 🟠Использование Content Security Policy (CSP)
CSP ограничивает выполнение скриптов только из доверенных источников.
🟠HttpOnly и Secure cookies
Флаг
HttpOnly запрещает доступ к cookie через JavaScript, а Secure требует HTTPS. 🟠Не используйте `eval()`, `innerHTML`, `document.write()`
Эти методы позволяют вставлять HTML и JavaScript без защиты.
Ставь 👍 и забирай 📚 Базу знаний