Sobes.tech
Junior

Czym jest CSRF?

sobes.tech AI

Odpowiedź od AI

CSRF (Cross-Site Request Forgery) — to rodzaj ataku, w którym atakujący zmusza użytkownika do wykonania niepożądanych działań na stronie internetowej, na której użytkownik jest już uwierzytelniony.

Istota ataku polega na tym, że złośliwa strona lub e-mail zawiera żądanie, które przeglądarka użytkownika automatycznie wysyła do docelowej strony. Jeśli użytkownik jest zalogowany na stronie docelowej, jego przeglądarka wyśle pliki cookie, a żądanie zostanie wykonane z jego uprawnieniami.

Na przykład, może to być żądanie zmiany hasła, przelania pieniędzy lub usunięcia konta.

Aby chronić się przed CSRF, stosuje się różne metody:

  • Tokeny CSRF: tajne, unikalne dla każdego żądania tokeny, generowane na serwerze i wysyłane z każdym formularzem lub żądaniem AJAX. Serwer sprawdza zgodność otrzymanego tokena.
  • Atrybut cookie SameSite: ustawia regułę, według której pliki cookie są wysyłane do serwera tylko przy żądaniach z tego samego domeny, z której zostały ustawione.
  • Weryfikacja nagłówków Origin i Referer: serwer sprawdza, skąd pochodzi żądanie. Jednak te nagłówki mogą być zmienione przez atakującego lub nie być obecne w niektórych przypadkach.
  • Wymaganie ponownej autoryzacji dla działań krytycznych: żądanie hasła przed wykonaniem ważnych operacji.

Najskuteczniejszą i najczęściej stosowaną metodą jest użycie tokenów CSRF.

// Przykład dodania tokena CSRF do formularza
<form action="/transfer" method="POST">
  <input type="hidden" name="_csrf_token" value="token_generowany_przez_serwer">
  <input type="number" name="amount">
  <button type="submit">Przelej</button>
</form>
// Przykład sprawdzania tokena CSRF na serwerze (Node.js z Express)
app.post('/transfer', csrfProtection, (req, res) => {
  // Przetwarzanie żądania po pomyślnym sprawdzeniu tokena
});