← Назад к вопросам
Как происходит кража данных в приложении?
2.3 Middle🔥 161 комментариев
#Браузер и сетевые технологии
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI3 апр. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Векторы атак и кража данных в веб-приложениях
Кража данных - это одна из главных угроз безопасности. Frontend разработчик должен понимать основные векторы атак и как их предотвращать.
1. XSS (Cross-Site Scripting)
Злоумышленник внедряет вредоносный JavaScript код в приложение.
// УЯЗВИМО - innerHTML позволяет XSS
function displayComment(comment) {
document.getElementById('comments').innerHTML += comment;
// Если comment содержит: <img src=x onerror="stealCookie()">
}
// БЕЗОПАСНО - используй textContent
function safeDisplayComment(comment) {
const el = document.createElement('div');
el.textContent = comment;
document.getElementById('comments').appendChild(el);
}
// React защищён от XSS автоматически
function CommentList({ comments }) {
return <div>{comments.map(c => <p key={c.id}>{c.text}</p>)}</div>;
}
2. CSRF (Cross-Site Request Forgery)
Злоумышленник заставляет пользователя отправить запрос от его имени.
// УЯЗВИМО - нет защиты
fetch('/api/transfer-money', {
method: 'POST',
body: JSON.stringify({ amount: 1000 })
});
// ЗАЩИТА - используй CSRF токены
const csrfToken = document.querySelector('meta[name=csrf-token]').content;
fetch('/api/transfer-money', {
method: 'POST',
headers: { 'X-CSRF-Token': csrfToken },
body: JSON.stringify({ amount: 1000 })
});
3. Чтение Local Storage
Данные в localStorage доступны любому коду.
// УЯЗВИМО
localStorage.setItem('token', jwtToken);
// XSS атака может прочитать это
// ЗАЩИТА 1 - httpOnly cookies
// Set-Cookie: token=...; HttpOnly; Secure
// ЗАЩИТА 2 - хранение в памяти
let accessToken = null;
useEffect(() => {
refreshAccessToken(); // при загрузке
}, []);
4. Man-in-the-Middle (MITM) атаки
Перехват данных при передаче.
// УЯЗВИМО - HTTP
fetch('http://api.example.com/user', {
credentials: 'include'
});
// ЗАЩИТА - HTTPS
fetch('https://api.example.com/user', {
credentials: 'include'
});
5. Утечка через консоль
Разработчики случайно логируют чувствительные данные.
// УЯЗВИМО
console.log('User:', { email, password });
// ЗАЩИТА
if (process.env.NODE_ENV === 'development') {
console.log('User:', user);
}
6. Инъекции и eval
Внедрение кода через пользовательский ввод.
// УЯЗВИМО
eval('setUser("' + userInput + '")');
// ЗАЩИТА - никогда не используй eval
function setUser(name) {
return { name: sanitizeInput(name) };
}
Чеклист безопасности
- HTTPS везде
- HttpOnly cookies для токенов
- Не логируй чувствительные данные
- Escape XSS через React
- CSRF токены для изменений
- Валидация на фронте И на бэкенде
- Content Security Policy headers
- OWASP Top 10 знание
Безопасность - постоянный процесс, не одноразовая задача.