Σχεδιασμός και Υλοποίηση Πληροφοριακού Συστήματος βέλτιστης διαδρομής συνεπιβατών που
χρησιμοποιούν υπηρεσίες Ταξί
85
σύστημά μας να αποφεύγεται η χρήση δυναμικής δημιουργίας εντολών SQL, καθώς
ένας κακόβουλος χρήστης μπορεί να εκμεταλλευτεί το γεγονός ότι χρησιμοποιώντας
το χαρακτήρα «΄» (quote) μπορεί να προσθέσει στη συμβολοσειρά εισόδου μια
εντολή SQL, η οποία στη συνέχεια θα εκτελεστεί από τη διεργασία. Αντ’ αυτού, τόσο
η σύνδεση της βάσης δεδομένων, όσο και όλα τα ερωτήματα που αναπτύσσονται
προς αυτήν γίνονται με προκατασκευασμένες (prepared) εντολές PDO.
Με τη χρήση προκατασκευασμένων εντολών PDO, το ερώτημα που
απευθύνεται στη βάση δεδομένων διαχωρίζεται από τα δεδομένα, τα οποία δεν
χρησιμοποιούνται αυτούσια στην εντολή, αλλά αντικαθίστανται από σύμβολα, τα
οποία τα αντιπροσωπεύουν. Έτσι, δεν μπορούν να συμπεριληφθούν επιπλέον
πληροφορίες στη δήλωση και αποφεύγονται οι επιθέσεις SQL injection πρώτης τάξης.
Εικόνα 38: Παράδειγμα κώδικα προκατασκευασμένης εντολής PDO.
Μια ακόμη μορφή ελέγχου των δεδομένων που εισάγονται από τις φόρμες
γίνεται με τη βοήθεια του HTML5 Constraint Validation API και του Bootstrap
Validator. Η μέθοδος αυτή είναι client-side scripting, γι’ αυτό και δεν αρκεστήκαμε
μόνο σε αυτήν.
Οι κανόνες επικύρωσης ορίζονται στις εισόδους των πεδίων και μπορεί να
είναι της μορφής:
type="email"
type="url"
type="number", με πρόσθετους περιορισμούς max, min και βήμα step
pattern="Reg(ular )?Exp(ression)?" (για τους τύπους εισόδου text, search, tel,
url ή email)
required (απαιτείται)
Κάποια πρόσθετα μπορεί να είναι και της μορφής:
data-match="#inputPassword", για επιβεβαίωση πως δύο πεδία ταιριάζουν,
π.χ. πεδίο επιβεβαίωσης κωδικού (password confirmation)
data-minlength="5", για επιβολή ελάχιστου αριθμού χαρακτήρα
Για επιπλέον ασφάλεια, σε περίπτωση που κάποιο από τα πεδία της φόρμας
δεν έχει την απαιτούμενη μορφή ή δεν έχει συμπληρωθεί ενώ είναι required, το
κουμπί εισαγωγής είναι ανενεργό. Στην παρακάτω εικόνα (Εικόνα 39) παρουσιάζεται
η φόρμα εγγραφής ενός χρήστη στο σύστημα με τους ελέγχους που γίνονται στα
πεδία.