65
id
. Τρεις είναι οι μέθοδοι που ακολουθεί για να την αποκτήσει, πρόβλεψη (prediction),
καθορισμός (fixation) και απόκτησης (capture) [23].
Για την πρώτη περίπτωση, της πρόβλεψης, ο επιτιθέμενος προσπαθεί να μαντέψει το
session id
δοκιμάζοντας τυχαίες ακολουθίες χαρακτήρων. Με τον μηχανισμό της PHP για τα
session
, το session id είναι εντελώς τυχαίο και μεγάλου μήκους με αποτέλεσμα να είναι
απίθανο (σχεδόν αδύνατο) να το μαντέψει.
Στην περίπτωση του καθορισμού, ο επιτιθέμενος προσπαθεί να ορίσει το session id
το οποίο θα χρησιμοποιήσει ένας χρήστης. Έτσι στέλνει ένα url link στο χρήστη-θύμα στο
οποίο έχει οριστεί το session id, για να επισκεφθεί μια σελίδα πατώντας πάνω στο link. Εάν
ο χρήστης πατήσει πάνω στο link, τότε ο επιτιθέμενος γνωρίζει το session id του χρήστη –
θύμα και έτσι μπορεί να τον παριστάνει. Δεν αποτελεί δύσκολη περίπτωση αντιμετώπισης,
αρκεί ο μηχανισμός για τα sessions να μην αποτελείται μόνο από το session_start(). Ο
τρόπος αντιμετώπισης για αυτό του είδους την επίθεση είναι να ελέγξουμε εάν το session_id
δεν είναι ενεργό τότε να γίνει regenerate, δηλαδή να αλλάξουμε session id στο χρήστη.
Παρακάτω παρατίθεται ο PHP κώδικας που πραγματοποιεί τη συγκεκριμένη ενέργεια.
Εικόνα 40
:
Κώδικας για αποτροπή
session fixation
Η τρίτη περίπτωση, της απόκτησης του session (session hijacking), είναι και η πιο
δύσκολη ως προς την αντιμετώπισή της. Είναι η πιο κοινή επίθεση στο session και εκτελείται
με διαφορετικές προσεγγίσεις. Για το λόγο αυτό, θα προσθέσουμε πολυπλοκότητα, ώστε να
αυξήσουμε την ασφάλεια. Με την πιο απλή προσέγγιση του μηχανισμού των sessions, ένα
έγκυρο session id είναι ό,τι χρειάζεσαι για να αποκτήσεις (hijack) επιτυχημένα το session.