Το CSRF ή το Cross-Site Request Forgery είναι μια ευπάθεια ιστότοπου όπου ένας εισβολέας μπορεί να προκαλέσει μια ενέργεια στην περίοδο σύνδεσης ενός θύματος σε έναν άλλο ιστότοπο. Ένα από τα πράγματα που καθιστούν το CSRF τόσο μεγάλο κίνδυνο είναι ότι δεν απαιτεί καν αλληλεπίδραση με τον χρήστη, το μόνο που χρειάζεται είναι να δει το θύμα μια ιστοσελίδα με το exploit σε αυτήν.
Συμβουλή: Το CSRF γενικά προφέρεται είτε γράμμα προς γράμμα είτε ως “sea surf”.
Πώς λειτουργεί μια επίθεση CSRF;
Η επίθεση περιλαμβάνει τον εισβολέα που δημιουργεί έναν ιστότοπο που έχει μια μέθοδο υποβολής αιτήματος σε έναν άλλο ιστότοπο. Αυτό θα μπορούσε να απαιτεί αλληλεπίδραση με τον χρήστη, όπως να τους κάνει να πατήσουν ένα κουμπί, αλλά θα μπορούσε επίσης να είναι χωρίς αλληλεπίδραση. Στο JavaScript υπάρχουν τρόποι για να κάνετε μια ενέργεια να συμβεί αυτόματα. Για παράδειγμα, μια εικόνα εικονοστοιχείων μηδέν προς μηδέν δεν θα είναι ορατή στον χρήστη, αλλά μπορεί να ρυθμιστεί έτσι ώστε το "src" της να υποβάλει αίτημα σε άλλο ιστότοπο.
Η JavaScript είναι μια γλώσσα πελάτη, αυτό σημαίνει ότι ο κώδικας JavaScript εκτελείται στο πρόγραμμα περιήγησης και όχι στον διακομιστή ιστού. Χάρη σε αυτό το γεγονός, ο υπολογιστής που κάνει το αίτημα CSRF είναι στην πραγματικότητα αυτός του θύματος. Δυστυχώς, αυτό σημαίνει ότι το αίτημα γίνεται με όλα τα δικαιώματα που έχει ο χρήστης. Μόλις ο ιστότοπος που επιτίθεται έχει εξαπατήσει το θύμα για να υποβάλει το αίτημα CSRF, το αίτημα ουσιαστικά δεν διακρίνεται από το χρήστη που κάνει το αίτημα κανονικά.
Το CSRF είναι ένα παράδειγμα «σύγχυσης υποβοηθητικής επίθεσης» κατά του προγράμματος περιήγησης ιστού, καθώς το πρόγραμμα περιήγησης εξαπατάται να χρησιμοποιήσει τα άδειά του από έναν εισβολέα χωρίς αυτά τα προνόμια. Αυτά τα δικαιώματα είναι τα διακριτικά περιόδου λειτουργίας και ελέγχου ταυτότητας στον ιστότοπο προορισμού. Το πρόγραμμα περιήγησής σας περιλαμβάνει αυτόματα αυτές τις λεπτομέρειες σε οποιοδήποτε αίτημα υποβάλλει.
Οι επιθέσεις CSRF είναι κάπως περίπλοκες να οργανωθούν. Πρώτα απ 'όλα, ο ιστότοπος-στόχος πρέπει να έχει μια φόρμα ή μια διεύθυνση URL που έχει παρενέργειες όπως η διαγραφή του λογαριασμού σας. Στη συνέχεια, ο εισβολέας πρέπει να δημιουργήσει ένα αίτημα για να εκτελέσει την επιθυμητή ενέργεια. Τέλος, ο εισβολέας πρέπει να κάνει το θύμα να φορτώσει μια ιστοσελίδα με το exploit σε αυτήν ενώ είναι συνδεδεμένο στον ιστότοπο-στόχο.
Για να αποτρέψετε προβλήματα CSRF, το καλύτερο που μπορείτε να κάνετε είναι να συμπεριλάβετε ένα διακριτικό CSRF. Ένα διακριτικό CSRF είναι μια συμβολοσειρά που δημιουργείται τυχαία και ορίζεται ως cookie, η τιμή πρέπει να περιλαμβάνεται σε κάθε απάντηση μαζί με μια κεφαλίδα αιτήματος που περιλαμβάνει την τιμή. Ενώ μια επίθεση CSRF μπορεί να περιλαμβάνει το cookie, δεν υπάρχει τρόπος να προσδιορίσετε την τιμή του διακριτικού CSRF για να ορίσετε την κεφαλίδα και έτσι η επίθεση θα απορριφθεί.