Sobes.tech
Junior

Τι είναι το CSRF;

sobes.tech AI

Απάντηση από AI

CSRF (Cross-Site Request Forgery) — είναι ένας τύπος επίθεσης όπου ένας επιτιθέμενος αναγκάζει τον χρήστη να εκτελέσει ανεπιθύμητες ενέργειες σε μια ιστοσελίδα όπου είναι ήδη πιστοποιημένος.

Ο πυρήνας της επίθεσης είναι ότι ένας κακόβουλος ιστότοπος ή email περιέχει ένα αίτημα που ο περιηγητής του χρήστη στέλνει αυτόματα στον στόχο. Αν ο χρήστης είναι συνδεδεμένος στον στόχο, ο περιηγητής του θα στείλει cookies και το αίτημα θα εκτελεστεί με τα δικαιώματά του.

Για παράδειγμα, αυτό μπορεί να είναι ένα αίτημα αλλαγής κωδικού, μεταφορά χρημάτων ή διαγραφή λογαριασμού.

Για την προστασία από CSRF, χρησιμοποιούνται διάφορες μέθοδοι:

  • Tokens CSRF: μυστικά, μοναδικά tokens για κάθε αίτημα, που δημιουργούνται στον διακομιστή και αποστέλλονται με κάθε φόρμα ή AJAX αίτημα. Ο διακομιστής ελέγχει την αντιστοιχία του token.
  • Atributo SameSite στα cookies: ορίζει έναν κανόνα σύμφωνα με τον οποίο τα cookies αποστέλλονται στον διακομιστή μόνο σε αιτήματα από τον ίδιο τομέα όπου έχουν οριστεί.
  • Έλεγχος των κεφαλίδων Origin και Referer: ο διακομιστής ελέγχει από πού προέρχεται το αίτημα. Ωστόσο, αυτές οι κεφαλίδες μπορούν να τροποποιηθούν από έναν επιτιθέμενο ή να μην υπάρχουν σε ορισμένες περιπτώσεις.
  • Απαιτείται επανεπιβεβαίωση ταυτοποίησης για κρίσιμες ενέργειες: ζητείται ο κωδικός πρόσβασης πριν από την εκτέλεση σημαντικών ενεργειών.

Ο πιο αποτελεσματικός και συνηθισμένος τρόπος είναι η χρήση tokens CSRF.

// Παράδειγμα προσθήκης token CSRF σε φόρμα
<form action="/transfer" method="POST">
  <input type="hidden" name="_csrf_token" value="παραγόμενο από τον διακομιστή token">
  <input type="number" name="amount">
  <button type="submit">Μεταφορά</button>
</form>
// Παράδειγμα ελέγχου token CSRF στον διακομιστή (Node.js με Express)
app.post('/transfer', csrfProtection, (req, res) => {
  // Επεξεργασία του αιτήματος μετά την επιτυχή επαλήθευση του token
});