Zeichenfolgen brechen, wenn sie Systeme kreuzen. Ein doppeltes Anführungszeichen in einer JavaScript-String, ein Ampersand in einem HTML-Attribut, ein Leerzeichen in einem Abfrageparameter: jedes Ziel hat seine gefährlichen Zeichen und seine eigene Weise, sie zu entwaffnen. Das Tool String Maskieren/Entmaskieren wandelt eine eingefügte Zeichenfolge in die sichere Form für dieses Ziel um und zurück, vollständig im Browser: nichts wird hochgeladen und nichts verlässt den Tab. Es arbeitet in sechs Modi, drei Ziele in zwei Richtungen: Escape JavaScript, Unescape JavaScript, Escape HTML, Unescape HTML, Escape URL und Unescape URL. Nehmen Sie eine 25-Zeichen-Eingabe: ein Gruß mit einem Ampersand, einem Doppelpunkt und einem zitierten Satz in spitzen Klammern. Nach HTML-Maskierung misst sie 45 Zeichen, nach URL-Maskierung ebenfalls 45, und diese beiden 45-Zeichen-Ergebnisse sind verschiedene Zeichenfolgen, was der Kern ist.
Sechs Modi: drei Ziele, zwei Richtungen
Der JavaScript-Modus schreibt 9 der 128 ASCII-Codes als zwei-Zeichen-Sequenzen um: Rückwärtsschrägstrich, doppeltes Anführungszeichen, einfaches Anführungszeichen, Zeilenumbruch, Wagenrücklauf, Tab, Rückwärtssetzung, Seitenvorschub und der NUL-Code. Am Beispiel der 25 Zeichen ändern sich nur die beiden doppelten Anführungszeichen, die Ausgabe lässt Ampersand und spitze Klammern unberührt und misst 27 Zeichen; eine Zeichenfolge mit einem echten Tab und einem echten Zeilenumbruch kommt an diesen Stellen mit einem buchstäblichen Rückwärtsschrägstrich-t und Rückwärtsschrägstrich-n zurück. Der HTML-Modus wandelt genau fünf Zeichen um: den Ampersand in eine fünf-Zeichen-Referenz, die zwei spitzen Klammern in vier-Zeichen-Referenzen, das doppelte Anführungszeichen in eine sechs-Zeichen-Referenz und das einfache Anführungszeichen in eine numerische Referenz. Der URL-Modus ist die Prozentkodierung. Jedes Maskieren hat seinen Entmaskieren-Zwilling, und jede Umwandlung läuft beim Einfügen, ohne Server-Rundlauf.
Das 25-Zeichen-Beispiel, drei Ziele
Ohne Schmuck geschrieben: ein Gruß, ein Ampersand, ein Doppelpunkt und ein zitierter Satz in spitzen Klammern, 25 Zeichen gesamt. Die JavaScript-Maskierung setzt vor jedes der beiden doppelten Anführungszeichen einen Rückwärtsschrägstrich, 27 Zeichen. Die HTML-Maskierung ersetzt den einzigen Ampersand durch seine fünf-Zeichen-Referenz, die beiden doppelten Anführungszeichen durch die sechs-Zeichen-Referenz und das Paar spitze Klammern durch vier-Zeichen-Referenzen: 25 plus 20, landet bei 45. Die URL-Maskierung kodiert die vier Leerzeichen, den Ampersand, den Doppelpunkt, die beiden doppelten Anführungszeichen und die beiden spitzen Klammern in Prozent: zehn Einzelzeichen werden zehn drei-Zeichen-Sequenzen und die Summe landet ebenfalls bei 45, eine Zufälligkeit dieser Eingabe. Drei Ziele, drei Antworten, und die Eingabe wird niemals am Ort geändert: das Tool schreibt immer eine neue Zeichenfolge in das Ausgabefeld.
URL-Maskierung: was die Prozentkodierung behält
encodeURIComponent lässt 71 der 96 druckbaren ASCII-Zeichen unverändert: alle 62 Buchstaben und Ziffern plus neun Symbole, das Ausrufezeichen, das einfache Anführungszeichen, die beiden Klammern, der Stern, der Punkt, der Bindestrich, der Unterstrich und der Tilde. Alles andere wird zu einem Prozentzeichen plus zwei Hexadezimalziffern. Deshalb ist es ein Komponenten-Kodierer, kein URL-Kodierer: führen Sie es auf einer vollen 53-Zeichen-Adresse mit Abfragezeichenfolge aus und die Schrägstriche, die Doppelpunkte, das Fragezeichen und das Gleichheitszeichen werden zu %2F, %3A, %3F und %3D, was eine 75-Zeichen-Komponente ergibt, https%3A%2F%2Futlkit.com%2Ftools%2Fstring-escape%2F%3Fq%3DTom%20%26%20Jerry. Wenn die Frage eine Komponente einer URL gegenüber der ganzen URL ist, trennt der URL-Encoder/Decoder diese Entscheidung explizit. In der anderen Richtung lehnt decodeURIComponent eine fehlerhafte Sequenz wie ein hängendes %E0 mit einem geworfenen Fehler ab, und das Tool fängt ihn ab und zeigt die Meldung statt einer halb dekodierten Zeichenfolge.
Den Modus nach dem Ziel wählen
Die Regel ist Ziel zuerst. Code, den ein JavaScript-Parser liest, will die JavaScript-Maskierung; Text oder Attributwert, der als Markup geparst wird, will die HTML-Maskierung; ein Abfrageparameter will die URL-Maskierung. Die Nachbarn decken die Ränder ab: der HTML-Entitäten Encoder/Decoder arbeitet in benannten und numerischen Referenzen, so dass ein Nicht-Bruch-Leerzeichen   und eine Ellipse … wird; der Base64-Encoder/-Decoder bringt binarähnliche Nutzlasten ganz aus dem Textkanal; und der Hex UTF-8 Base64 Umrechner zeigt dieselben Bytes als Hex, UTF-8-Text und Base64, wenn die Frage ist, was die Bytes sind, nicht wie man sie zitiert.
Wo maskierte Zeichenfolgen auf den Rest des Sets treffen
Maskieren passiert fast nie allein. Wenn die maskierte Ausgabe in eine JSON-Nutzlast soll, zeigt das Einfügen in den JSON-Formatierer entweder sauberes Parsen oder den exakten Charakter, der es gebrochen hat. Wenn die Eingabe von einer Zwischenablage voller unsichtbarer Zeichen kam, macht der Leerraum-Reiniger Tabs und Zeilenumbrüche sichtbar, bevor eine Maskierungsentscheidung fällt, damit ein Rückwärtsschrägstrich-t in der Ausgabe ein Tab ist, das Sie geschickt haben, keine Überraschung.
Rundläufe und die Falle der doppelten Maskierung
Jedes Maskieren im Tool hat seine Umkehrung, die dieselbe 128-Code-Tabelle rückwärts durchläuft: JavaScript-Maskierung dann JavaScript-Entmaskierung gibt die ursprüngliche Zeichenfolge unverändert zurück, und das URL-Paar macht ebenfalls den Rundlauf, Hexadezimalpaare eingeschlossen. Die Einbahnstraße ist die doppelte Maskierung. Führen Sie die HTML-Maskierung zweimal aus und das Ampersand innerhalb der Referenz wird selbst maskiert, das Ergebnis rendert als sichtbarer Text einer Referenz statt des Zeichens, das sie benennt, und das Rückgängigmachen braucht zwei Entmaskierungspässe, nicht einen. Der Fehlermodus ist nicht das Maskieren selbst, sondern es zweimal anzuwenden, oder einmal im falschen Modus. Und wenn das Problem einer Zeichenfolge ihre Struktur statt ihre Zeichen ist, sind die Maskierungstools das falsche Instrument: der HTML-Formatierungs-Guide deckt die Formatierungsseite desselben Dokuments ab.