background image

Σχεδιασμός και Υλοποίηση  Πληροφοριακού Συστήματος βέλτιστης διαδρομής συνεπιβατών που 
χρησιμοποιούν υπηρεσίες Ταξί 

 

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) παρουσιάζεται 
η  φόρμα  εγγραφής  ενός  χρήστη  στο  σύστημα  με  τους  ελέγχους  που  γίνονται  στα 
πεδία.