Το SQL escape/unescape αναφέρεται στη διαδικασία εξυγίανσης της εισαγωγής κειμένου, ώστε να μπορεί να ενσωματωθεί με ασφάλεια σε προτάσεις SQL.
Escaping τροποποιεί ειδικούς χαρακτήρες (όπως εισαγωγικά ή ανάστροφες καθέτους) με τρόπο που αποτρέπει συντακτικά σφάλματα ή εκτέλεση κακόβουλου κώδικα.
Unescaping μετατρέπει τους χαρακτήρες escape πίσω στην αρχική τους μορφή, συνήθως για εμφάνιση ή περαιτέρω επεξεργασία.
Για να αποτρέψετε επιθέσεις έγχυσης SQL, όπου κακόβουλη εισαγωγή μπορεί να αλλάξει τη λογική ενός ερωτήματος SQL.
Για να αποφευχθούν συντακτικά σφάλματα σε ερωτήματα όταν τα δεδομένα περιέχουν χαρακτήρες όπως ', " ή \.
Για να διατηρηθεί η ακεραιότητα των δεδομένων, διασφαλίζεται ότι η εισαγωγή δεδομένων από τον χρήστη αποθηκεύεται και ανακτάται ακριβώς όπως εισήχθη.
Η διαφυγή γίνεται με:
Διπλασιάζοντας μονά εισαγωγικά σε συμβολοσειρές (π.χ., το 'O'Brien' γίνεται 'O''Brien').
Χρησιμοποιώντας ενσωματωμένες συναρτήσεις βάσης δεδομένων ή βιβλιοθήκες για να διαφύγετε σωστά τις εισόδους.
Η διαφυγή συμβαίνει όταν ανάκτηση των δεδομένων, που συχνά διαχειρίζεται αυτόματα από τη βάση δεδομένων ή το επίπεδο εφαρμογής σας.
Στη σύγχρονη ανάπτυξη, αυτό συνήθως διαχειρίζεται από παραμετροποιημένα ερωτήματα ή ORM (Object-Relational Mappers), τα οποία χειρίζονται την διαφυγή με ασφάλεια και αυτόματα.
Όταν εισάγετε ή υποβάλλετε ερωτήματα για την είσοδο χρήστη απευθείας σε ακατέργαστη SQL (δεν συνιστάται εκτός εάν έχει γίνει σωστή διαφυγή).
Όταν ασχολείστε με παλαιά συστήματα ή ακατέργαστες συμβολοσειρές SQL όπου δεν υπάρχει αυτόματη προστασία.
Να διαφεύγετε πάντα τις εισόδους εκτός εάν χρησιμοποιείτε έτοιμες δηλώσεις ή παραμετροποιημένα ερωτήματα, τα οποία είναι οι προτιμώμενες και ασφαλέστερες εναλλακτικές λύσεις.