Защита от XSS атак: руководство для начинающих
Что такое XSS атака и как от неё защититься?
Привет! Сегодня мы разберем, что такое XSS (Cross-Site Scripting) атака простыми словами и научимся защищать от неё наши сайты.
Что такое XSS атака?
XSS атака происходит, когда злоумышленник находит способ добавить свой JavaScript код на ваш сайт. Это как если бы кто-то подбросил свою записку в вашу почтовую коробку, и все, кто её прочитает, попадут в неприятности.
Где может прятаться XSS?
1. В поисковой строке (Reflected XSS)
Представьте, что у вас есть поиск на сайте. Пользователь вводит запрос, и вы показываете его на странице:
// ❌ Опасный код
app.get('/search', (req, res) => {
res.send(`Вы искали: ${req.query.q}`);
});
// 😈 Злоумышленник может отправить:
// http://сайт.ru/search?q=<script>украсть_данные()</script>
2. В комментариях (Stored XSS)
Это как граффити на стене - написал один, а видят все:
// ❌ Опасный код
app.post('/comments', (req, res) => {
comments.save({
text: req.body.comment // Опасно! Нет проверки
});
});
Как защититься?
1. Правило №1: Никогда не доверяй пользовательским данным
Всё, что приходит от пользователя (даже если это ваш друг), нужно проверять:
// ✅ Безопасный код
function сделатьТекстБезопасным(опасныйТекст) {
return опасныйТекст
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
// Теперь можно использовать:
app.get('/search', (req, res) => {
res.send(`Вы искали: ${сделатьТекстБезопасным(req.query.q)}`);
});
2. Используйте современные фреймворки
React, Vue или Angular уже имеют встроенную защиту:
// ✅ React автоматически защищает от XSS
function КомпонентПоиска({ текстПоиска }) {
return <div>{текстПоиска}</div>; // Безопасно!
}
3. Добавьте дополнительную защиту
Представьте это как замки на двери - чем больше, тем безопаснее:
<!-- Добавьте в заголовок HTML -->
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'">
Простой чек-лист безопасности
- ✅ Проверяйте все данные от пользователей
- ✅ Используйте современные фреймворки
- ✅ Не вставляйте HTML напрямую через innerHTML
- ✅ Регулярно обновляйте все библиотеки
- ✅ Если сомневаетесь - лучше перестраховаться
Как проверить свой сайт?
- Попробуйте ввести в формы такой текст:
<script>alert('Тест')</script>
- Если увидите всплывающее окно - у вас проблема с безопасностью
- Используйте инструменты проверки:
- OWASP ZAP (бесплатный)
- Burp Suite (есть бесплатная версия)
Заключение
XSS атаки опасны, но защититься от них можно! Главное - всегда проверять данные от пользователей и использовать современные инструменты разработки. Начните с простых шагов из нашего чек-листа, и ваш сайт станет намного безопаснее.