Junior
Какво е CSRF?
sobes.tech AI
Отговор от AI
CSRF (Cross-Site Request Forgery) — това е вид атака, при която злонамерен сайт принуждава потребителя да извърши нежелани действия на уебсайт, на който вече е влязъл.
Същността на атаката е, че злонамерен сайт или имейл съдържа заявка, която браузърът на потребителя автоматично изпраща към целевия сайт. Ако потребителят е влязъл в системата, браузърът му ще изпрати бисквитките, и заявката ще бъде изпълнена с неговите права.
Например, това може да бъде заявка за промяна на парола, превод на пари или изтриване на акаунт.
За защита срещу CSRF се използват различни методи:
- CSRF токени: тайни, уникални за всяка заявка токени, които се генерират на сървъра и се изпращат с всяка форма или AJAX заявка. Сървърът проверява съвпадението на получените токени.
- SameSite атрибут на бисквитките: задава правило, при което бисквитките се изпращат към сървъра само при заявки от същия домейн, от който са поставени.
- Проверка на заглавките Origin и Referer: сървърът проверява откъде е дошла заявката. Въпреки това, тези заглавки могат да бъдат променени от нападател или да липсват в някои случаи.
- Изискване за повторна автентикация за критични действия: заявка за въвеждане на парола преди изпълнение на важни операции.
Най-ефективният и разпространен метод е използването на CSRF токени.
// Пример за добавяне на CSRF токен към форма
<form action="/transfer" method="POST">
<input type="hidden" name="_csrf_token" value="токен, генериран от сървъра">
<input type="number" name="amount">
<button type="submit">Прехвърли</button>
</form>
// Пример за проверка на CSRF токена на сървъра (Node.js с Express)
app.post('/transfer', csrfProtection, (req, res) => {
// Обработка на заявката след успешна проверка на токена
});