Σχεδιασμός και υλοποίηση πληροφοριακού συστήματος διαχείρισης εθελοντών και απινιδωτών
61
αντιμετωπίσουμε, όταν επιθυμούμε να προστατεύσουμε μία διαδικτυακή εφαρμογή. Οι
κώδικας που αναπτύσσει ο προγραμματιστής, εκτός από τη σωστή λειτουργικότητα, θα πρέπει
να είναι και ασφαλής (με κάθε έννοια του όρου). Ως εκ τούτου, θα πρέπει να χρησιμοποιούνται
όλες οι βέλτιστες πρακτικές ασφαλείας και οι συνιστώμενες τεχνικές. Σε αυτό το σημείο
μπαίνουν στο παιχνίδι, τα διάφορα frameworks και οι έτοιμες λειτουργίες που προσφέρουν
περί ασφαλείας. Λόγω των πολλών κατηγοριών επιθέσεων που μπορεί να προκύψουν, οι
οποίες ολοένα και αυξάνονται με τα χρόνια και γίνονται ακόμα πιο πολύπλοκες, ο
προγραμματιστής θα πρέπει να διαθέτει και άριστες γνώσεις δικτύων, servers, πρωτοκόλλων
κτλ. πράγμα το οποίο φαντάζει αρκετά δύσκολο. Επίσης λόγω ημιμάθειας, παρατηρείται συχνά
το φαινόμενο, όπου ένας προγραμματιστής “νομίζει” ότι έχει λάβει όλα τα απαραίτητα μέτρα
ασφαλείας αντιγράφοντας κομμάτια κώδικα που χρησιμεύουν για αυτό τον λόγο, δίχως
ωστόσο να τεστάρει την εφαρμογή του δημιουργώντας στο τέλος, αρκετά κενά ασφαλείας,
αφήνοντας έτσι την εφαρμογή του εκτεθειμένη. Για να εξαλειφθούν τέτοιες καταστάσεις, μία
ασφαλής και σίγουρη τεχνική είναι, ο προγραμματιστής να “αφήνει” κατά κάποιον τρόπο την
ασφάλεια στα “χέρια” του framework ώστε αυτός να παραμένει προσηλωμένος στην ανάπτυξη
της εφαρμογής. Το Slim ως θερμός οπαδός της ασφάλειας, παρέχει όλα τα εργαλεία που
χρειάζεται μία σύγχρονη διαδικτυακή εφαρμογή για να θεωρείται ασφαλής. Παρακάτω
παρουσιάζονται διάφορες τεχνικές ασφαλείας που χρησιμοποιήθηκαν στην διαδικτυακή
εφαρμογή.
• Ασφάλεια από επιθέσεις ψεκασμού εντολών SQL (SQL injection) [37]. Αποτελεί
επίθεση που στοχεύει στην αλλαγή των εντολών SQL που επεξεργάζονται την βάση
δεδομένων. Χωρίς την χρήση κάποιου είδους προστασίας, μπορεί ο χρήστης να περάσει
μαζί με μία προκαθορισμένη εντολή SQL και μία δεύτερη που θα “ρίχνει” (drop) έναν
πίνακα της βάσης. Μία λύση στην επίθεση αυτή είναι η χρήση της λειτουργίας PDO [38],
η οποία προτείνεται από την γλώσσα PHP σαν ένας τρόπος προστασίας στην συγκεκριμένη
επίθεση. Στην ουσία “σπάει” σε τμήματα (bindings) τα δεδομένα που δίνονται σε μία
εντολή SQL και τα ελέγχει ατομικά.
• Λειτουργία συνοδού (session) και στρωμάτων ασφαλείας (middlewares) στο κομμάτι
αυθεντικοποίησης, λειτουργία κλειδιού (api_token) στο κομμάτι του api. Η
διαδικτυακή εφαρμογή χωρίζεται σε δύο κομμάτια. Στο κομμάτι αυθεντικοποίησης και στο
api. Στο πρώτο κομμάτι, αφού ο χρήστης συνδεθεί, του δίνεται συνοδός (session) 120