Sobes.tech
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) => {
  // Обработка на заявката след успешна проверка на токена
});