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