Escape και unescape συμβολοσειρών
Κάντε escape ή unescape σε συμβολοσειρές για JSON, JavaScript, SQL, CSV, χαρακτηριστικά HTML, κανονικές εκφράσεις και URL, στο πρόγραμμα περιήγησής σας.
Το escape δεν υποκαθιστά τα ερωτήματα με παραμέτρους (prepared statements). Χρησιμοποιήστε αυτό το αποτέλεσμα για να διαβάσετε ή να διορθώσετε SQL, ποτέ για να φτιάξετε ερωτήματα από δεδομένα χρήστη.
Πώς να κάνετε escape ή unescape σε μια συμβολοσειρά
- Διαλέξτε τον στόχο στο πεδίο Μορφή: Συμβολοσειρά JSON, Συμβολοσειρά JavaScript, Template literal JavaScript, Λεκτικό συμβολοσειράς SQL, Πεδίο CSV, Τιμή χαρακτηριστικού HTML, Κανονική έκφραση ή Στοιχείο URL.
- Πληκτρολογήστε ή επικολλήστε το κείμενό σας στο πλαίσιο εισόδου.
- Πατήστε Escape για να μετατρέψετε απλό κείμενο σε ασφαλές κυριολεκτικό ή Unescape για να μετατρέψετε ένα κυριολεκτικό ξανά σε απλό κείμενο. Το αποτέλεσμα ενημερώνεται καθώς πληκτρολογείτε, προς την κατεύθυνση που επιλέξατε τελευταία.
- Προσαρμόστε τις επιλογές που εμφανίζονται για τη μορφή: Προσθήκη εισαγωγικών γύρω από το κείμενο, Escape χαρακτήρων εκτός ASCII ή Κενά ως + (δεδομένα φόρμας).
- Πατήστε Αντιγραφή ή Χρήση του αποτελέσματος ως εισόδου για να αντιστρέψετε τη διαδικασία και να ελέγξετε την αναστροφή.
Ο αριθμός των χαρακτήρων πριν και μετά εμφανίζεται κάτω από τα κουμπιά. Όλα εκτελούνται στο πρόγραμμα περιήγησής σας και τίποτα δεν μεταφορτώνεται.
Τι κάνει κάθε μορφή
- Συμβολοσειρά JSON: κάνει escape στα
",\και στους χαρακτήρες ελέγχου (\n,\t,\u0000…), ακριβώς όπως ηJSON.stringify. Με την επιλογή Escape χαρακτήρων εκτός ASCII, κάθε χαρακτήρας πάνω από το U+007E γίνεται\uXXXX(τα emoji γίνονται ζεύγος surrogate, όπως😀). Το unescape δέχεται το κείμενο με ή χωρίς τα διπλά εισαγωγικά και ανέχεται ωμές αλλαγές γραμμής. - Συμβολοσειρά JavaScript (‘…’): κάνει escape στην ανάστροφη κάθετο, στο μονό εισαγωγικό, στις αλλαγές γραμμής και στους χαρακτήρες ελέγχου, καθώς και στα U+2028 και U+2029 που χαλούν παλαιότερες μηχανές. Το unescape κατανοεί τα
\x41,A,\u{1F600}, τα παλαιά οκταδικά escape όπως το\101και τις συνέχειες γραμμής. - Template literal JavaScript (`…`): κάνει escape στους ανάποδους τόνους, στις ανάστροφες καθέτους και στο
${, ώστε να μην υπολογίζεται καμία έκφραση. Οι αλλαγές γραμμής και τα tab μένουν ως έχουν, αφού τα template literals τα επιτρέπουν. - Λεκτικό συμβολοσειράς SQL (‘…’): διπλασιάζει τα μονά εισαγωγικά (
O'Brien→'O''Brien'), όπως στην τυπική SQL. Το unescape αρνείται ένα εισαγωγικό που δεν είναι διπλασιασμένο. Οι ανάστροφες κάθετοι μένουν ανέγγιχτες: η MySQL στην προεπιλεγμένη λειτουργία τη χειρίζεται επίσης ως χαρακτήρα escape, γι’ αυτό ελέγξτε τους κανόνες της βάσης σας. - Πεδίο CSV (RFC 4180): περικλείει το πεδίο σε διπλά εισαγωγικά και διπλασιάζει τα εσωτερικά εισαγωγικά όταν περιέχει κόμμα, ερωτηματικό, tab, εισαγωγικό, αλλαγή γραμμής ή αρχικό/τελικό κενό. Η επιλογή Προσθήκη εισαγωγικών γύρω από το κείμενο επιβάλλει τα εισαγωγικά.
- Τιμή χαρακτηριστικού HTML: αντικαθιστά τα
&,<,>,"και'με οντότητες, κάτι που είναι ασφαλές τόσο σε χαρακτηριστικά με μονά όσο και με διπλά εισαγωγικά. Το unescape αποκωδικοποιεί τις αριθμητικές αναφορές και τα&,<,>,",'και . - Κανονική έκφραση (κυριολεκτικό κείμενο): προσθέτει ανάστροφη κάθετο στα
. * + ? ^ $ { } ( ) | [ ] \ /, καθώς και στις αλλαγές γραμμής και τα tab, ώστε το μοτίβο να ταιριάζει κυριολεκτικά με το κείμενο. Το αποτέλεσμα είναι έγκυρο με ή χωρίς τη σημαίαu. - Στοιχείο URL (κωδικοποίηση ποσοστού): λειτουργεί όπως η
encodeURIComponent, κωδικοποιώντας ως byte UTF-8 ό,τι δεν είναι γράμμα, ψηφίο ή ένα από τα- _ . ! ~ * ' ( ). Η επιλογή Κενά ως + (δεδομένα φόρμας) ακολουθεί τη σύμβασηapplication/x-www-form-urlencoded.
Το escape δεν είναι όριο ασφάλειας για την SQL
Όταν επιλέγετε SQL, το εργαλείο εμφανίζει μια υπενθύμιση που αξίζει να επαναληφθεί: η πραγματική λύση απέναντι στο SQL injection είναι το ερώτημα με παραμέτρους (prepared statement), όπου η τιμή στέλνεται χωριστά από το κείμενο SQL. Το χειροκίνητο escape είναι εύθραυστο: εξαρτάται από τη βάση δεδομένων, το σύνολο χαρακτήρων της σύνδεσης και ρυθμίσεις όπως ο χειρισμός της ανάστροφης καθέτου στη MySQL. Χρησιμοποιήστε το αποτέλεσμα για να διαβάσετε αρχεία καταγραφής, να γράψετε δεδομένα δοκιμών ή να διορθώσετε ένα ερώτημα, ποτέ για να φτιάξετε ερωτήματα από δεδομένα χρήστη.
Στο CSV, το εργαλείο προειδοποιεί επίσης όταν μια τιμή ξεκινά με =, +, - ή @: ένα υπολογιστικό φύλλο μπορεί να την εκτελέσει ως τύπο (CSV injection). Τα εισαγωγικά δεν το αποτρέπουν· η συνήθης αντιμετώπιση είναι να προτάξετε στην τιμή ένα απόστροφο ή ένα κενό.
Συχνές ερωτήσεις
Ποια είναι η διαφορά ανάμεσα σε μια συμβολοσειρά JSON και μια συμβολοσειρά JavaScript;
Το JSON επιτρέπει μόνο διπλά εισαγωγικά και ένα μικρό σύνολο escape (\" \\ \/ \b \f \n \r \t \uXXXX). Η JavaScript δέχεται επίσης μονά εισαγωγικά, ανάποδους τόνους, \x41, \u{…}, \v και \0. Τα έγκυρα escape του JSON είναι έγκυρα στη JavaScript, αλλά όχι το αντίστροφο.
Γιατί το unescape αποτυγχάνει με «μη έγκυρη ακολουθία escape»;
Το κείμενο περιέχει μια ανάστροφη κάθετο ακολουθούμενη από κάτι που η μορφή δεν επιτρέπει, όπως το \u12 με λιγότερα από τέσσερα δεκαεξαδικά ψηφία, ή μια τελική μεμονωμένη ανάστροφη κάθετο. Το μήνυμα σφάλματος δείχνει την προβληματική ακολουθία.
Χρειάζεται το CSV εισαγωγικά σε κάθε πεδίο;
Όχι. Το RFC 4180 απαιτεί εισαγωγικά μόνο όταν το πεδίο περιέχει κόμμα, διπλό εισαγωγικό ή αλλαγή γραμμής. Το εργαλείο βάζει εισαγωγικά και σε ερωτηματικά, tab και αρχικά ή τελικά κενά, επειδή πολλά υπολογιστικά φύλλα τα χρησιμοποιούν ως διαχωριστικά ή τα αφαιρούν.
Αρκεί το escape χαρακτηριστικού HTML για να αποτραπεί το XSS;
Είναι σωστό για κείμενο που μπαίνει μέσα σε τιμή χαρακτηριστικού με εισαγωγικά. Δεν αρκεί για χαρακτηριστικά που είναι από μόνα τους κώδικας ή URL, όπως τα onclick ή href="javascript:…"· αυτά χρειάζονται επικύρωση, όχι μόνο escape.
Στέλνεται το κείμενό μου σε διακομιστή;
Όχι. Όλες οι μετατροπές γίνονται τοπικά στο πρόγραμμα περιήγησής σας, επομένως μπορείτε να επικολλήσετε με ασφάλεια τιμές ρυθμίσεων ή δεδομένα που δεν θα θέλατε να μοιραστείτε.
Σχετικά εργαλεία
- Κωδικοποίηση και αποκωδικοποίηση URL Δωρεάν κωδικοποίηση και αποκωδικοποίηση URL. Κωδικοποιήστε παραμέτρους ή πλήρη URL με percent-encoding, αποκωδικοποιήστε ακολουθίες %XX και το + ως κενό.
- Κωδικοποίηση και αποκωδικοποίηση HTML entities Μετατρέψτε ειδικούς χαρακτήρες σε HTML entities (με όνομα, δεκαδικά ή hex) ή αποκωδικοποιήστε οποιοδήποτε entity, με τη λίστα των 2.231 αναφορών HTML5.
- Μορφοποίηση και επικύρωση JSON Δωρεάν μορφοποίηση και επικύρωση JSON που κάνει beautify, minify και έλεγχο του JSON στο πρόγραμμα περιήγησής σας, με συντακτικά σφάλματα ανά γραμμή και στήλη.
- Δοκιμή regex Δοκιμάστε κανονικές εκφράσεις JavaScript ζωντανά, με επισημασμένες αντιστοιχίες, ομάδες σύλληψης, αντικατάσταση και επεξήγηση κάθε στοιχείου του μοτίβου.