background image

Σχεδιασμός και υλοποίηση πληροφοριακού συστήματος διαχείρισης εθελοντών και απινιδωτών  

 
 

 
 

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