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
});