DedSec Project

Ασφαλείς είσοδοι, συνεδρίες ταυτότητας και μυστικά — DedSec Project

Ασφαλείς είσοδοι, συνεδρίες ταυτότητας και μυστικά 04. Έλεγχος εισόδων, SQL και HTML έξοδος Στόχος: Έλεγχος εισόδων, SQL και HTML έξοδος. Η επικύρωση εισόδου και η κωδικοποίηση εξόδου είναι…

04. Έλεγχος εισόδων, SQL και HTML έξοδος

Στόχος: Έλεγχος εισόδων, SQL και HTML έξοδος.

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

Παράδειγμα sqlite3:

row = db.execute("SELECT name FROM notes WHERE id = ?", (note_id,)).fetchone()

Το ερωτηματικό διαχωρίζει δεδομένα από σύνταξη SQL. Δεν ελέγχει όμως αν ο χρήστης έχει άδεια να διαβάσει το συγκεκριμένο note· αυτό απαιτεί ξεχωριστό authorization.

Στο browser, το textContent εμφανίζει χαρακτήρες HTML ως κείμενο. Το ανεξέλεγκτο innerHTML μπορεί να αλλάξει τη σημασία της εισόδου.

Άσκηση: δοκίμασε κενή τιμή, πολύ μακρύ κείμενο, ελληνικούς χαρακτήρες, εισαγωγικά και λάθος τύπο. Κατάγραψε σε ποιο σημείο γίνεται η απόρριψη ή η σωστή μετατροπή.

Μην αντικαθιστάς τον έλεγχο δικαιωμάτων με απλό sanitization.


Συμπληρωματική ύλη: Hacking Guide Project — ενότητα 40.

05. Συνεδρίες, OAuth, MFA και passkeys

Στόχος: Συνεδρίες, OAuth, MFA και passkeys.

Ένα session cookie ταυτοποιεί μια συνεδρία. Δεν πρέπει να αποθηκεύει επαναχρησιμοποιήσιμα μυστικά σε απλό κείμενο. Στο browser εξετάζεις Secure, HttpOnly και SameSite, ανανέωση αναγνωριστικών μετά από ευαίσθητες αλλαγές και πραγματική ακύρωση συνεδρίας στο logout.

Το OAuth αφορά παραχώρηση δικαιωμάτων. Το OpenID Connect προσθέτει πληροφορία ταυτότητας. Ένα access token προορίζεται για συγκεκριμένο κοινό και συγκεκριμένα scopes. Έλεγξε υπογραφή, εκδότη, παραλήπτη και λήξη· το ότι μια συμβολοσειρά μοιάζει με JWT δεν σημαίνει ότι είναι έγκυρη.

Το MFA μειώνει κίνδυνο κατάληψης λογαριασμού, αλλά τα recovery flows χρειάζονται εξίσου ισχυρή προστασία. Τα passkeys χρησιμοποιούν κρυπτογραφικά κλειδιά δεμένα με το origin της υπηρεσίας.

Άσκηση: σχεδίασε login, refresh, logout και ανάκτηση λογαριασμού. Ποιος μπορεί να ξεκινήσει κάθε βήμα; Πώς λήγει ή ανακαλείται το δικαίωμα;

Μην ελέγχεις μόνο το σωστό login. Έλεγξε ληγμένα tokens και σύγχυση μεταξύ λογαριασμών.


Συμπληρωματική ύλη: Hacking Guide Project — ενότητα 39.

06. Μυστικά, κρυπτογράφηση και κωδικοί

Στόχος: Μυστικά, κρυπτογράφηση και κωδικοί.

Το hash, η κρυπτογράφηση και η ψηφιακή υπογραφή έχουν διαφορετικούς ρόλους. Το hash βοηθά σε έλεγχο ισότητας/ακεραιότητας, η authenticated encryption προστατεύει περιεχόμενο και αλλοιώσεις, ενώ η υπογραφή επαληθεύει κάτι σε σχέση με ένα ιδιωτικό κλειδί. Μην εφευρίσκεις δικούς σου αλγορίθμους.

Για αποθήκευση passwords χρησιμοποίησε κατάλληλη αργή συνάρτηση όπως Argon2id όπου υποστηρίζεται, με μοναδικό salt και σωστές ρυθμίσεις. Το απλό SHA-256 δεν επαρκεί για κωδικούς. Κράτα μυστικά σε keystore ή ειδικό secret manager, όχι στο Git ή στα logs.

Παράδειγμα: ανέβηκε κατά λάθος API key. Το σβήσιμο από το τελευταίο commit δεν το ακυρώνει ούτε εξαφανίζει παλιές αντιγραφές. Πρώτα ανάκληση/rotation, έπειτα έλεγχος χρήσης και, αν απαιτείται, συντονισμένος καθαρισμός ιστορικού.

Άσκηση: σχεδίασε δημιουργία, αποθήκευση, πρόσβαση, αλλαγή και καταστροφή κλειδιού. Ποιος το βλέπει; Πώς ανακαλείται χωρίς να σταματήσει ολόκληρο το σύστημα;


Συμπληρωματική ύλη: Hacking Guide Project — ενότητα 49.