🧰 UtlKit

String Maskieren/Entmaskieren Online: Wie eine 25-Zeichen-Eingabe nach JavaScript, HTML und URL Maskierung 27, 45 und 45 Zeichen wird, mit den 9 JS-Codes, den 5 HTML-Zeichen und dem Percent-Modus Erklärt

Fügen Sie eine 25-Zeichen-Eingabe mit Ampersand, Anführungszeichen und spitzen Klammern ein: das Tool liefert 27 Zeichen nach JavaScript-Maskierung, 45 nach HTML-Maskierung und 45 nach URL-Maskierung, mit sechs Modi und ihren Rundlauf-Rückgängig, alles im Browser.

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.

Zugehörige Tools

Häufige Fragen

Warum wandelt der HTML-Maskierungsmodus den Ampersand vor jedem anderen Zeichen um?

Weil die fünf Referenzen, die der Modus schreibt, &, <, >, " und ', jeweils mit einem eigenen Ampersand beginnen. In einem einzigen Lauf von links nach rechts bedeutet die Ampersand-zuerst-Reihenfolge, dass die vier späteren Referenzen einmal geschrieben werden und ihr eingebauter Ampersand nie gescannt wird, sodass das 25-Zeichen-Beispiel sich genau um 20 erweitert und bei 45 landet. Jede andere Reihenfolge maskiert die Referenzen unterwegs erneut, und dieselbe Eingabe kommt deutlich länger heraus.

Meine JavaScript-Maskierung hat nur die beiden doppelten Anführungszeichen im 25-Zeichen-Beispiel geändert. Ist etwas kaputt?

Nein. Die JavaScript-Maskierung schreibt genau 9 der 128 ASCII-Codes um: Rückwärtsschrägstrich, doppeltes Anführungszeichen, einfaches Anführungszeichen, Zeilenumbruch, Wagenrücklauf, Tab, Rückwärtssetzung, Seitenvorschub und NUL. Ampersand und spitze Klammern sind in einer JavaScript-Zeichenfolge völlig legal, sie bleiben also unberührt und die Ausgabe bleibt bei 27 Zeichen, zwei Rückwärtsschrägstriche mehr als die Eingabe. Dieselbe Eingabe über die HTML-Maskierung erreicht 45, weil an diesem Ziel der Ampersand und die beiden Klammern die gefährlichen Zeichen sind. Der Modus entscheidet, was gefährlich zählt.

Der URL-Maskierungsmodus hat die Schrägstriche und das Fragezeichen meiner vollen Adresse kodiert. War das ein Fehler?

Nichts ist falsch, aber der Modus ist ein Komponenten-Kodierer, kein URL-Kodierer. encodeURIComponent hält 71 der 96 druckbaren ASCII-Zeichen und kodiert alles andere, einschließlich des Schrägstrichs, der Doppelpunkte, des Fragezeichens und des Gleichheitszeichens, sodass eine volle 53-Zeichen-Adresse mit Abfragezeichenfolge als 75-Zeichen-Komponente https%3A%2F%2Futlkit.com%2Ftools%2Fstring-escape%2F%3Fq%3DTom%20%26%20Jerry herauskommt. Wenn Sie die ganze URL als eine Einheit mit intakter Struktur behandeln wollen, macht der URL-Encoder/Decoder diese Trennung explizit. In der anderen Richtung wirft decodeURIComponent bei einer fehlerhaften Prozentsequenz wie %E0 einen Fehler, und das Tool zeigt die Meldung statt einer halb dekodierten Zeichenfolge.

Gibt Maskieren gefolgt von Entmaskieren immer die ursprüngliche Zeichenfolge zurück?

Für eine Eingabe, die nie maskiert war, ja. JavaScript-Maskierung dann JavaScript-Entmaskierung läuft dieselbe 128-Code-Tabelle vorwärts und rückwärts ab und gibt die Eingabe unverändert zurück, und das URL-Paar macht auch den Rundlauf, Hexadezimalpaare eingeschlossen. Die Fehlfunktion kommt aus zwei weiteren Richtungen. Die eine ist die doppelte Maskierung: führen Sie die HTML-Maskierung zweimal aus und der zweite Lauf maskiert den Ampersand innerhalb der Referenzen, die der erste Lauf schrieb, damit das Rückgängigmachen zwei Entmaskierungspässe braucht, nicht einen. Die andere ist, Daten zu entmaskieren, die nie maskiert waren: das Tippen eines Prozentzeichens gefolgt von zwei Ziffern, die keine gültige Sequenz bilden, wie ein hängendes %E0, lässt decodeURIComponent einen Fehler werfen, und das Tool zeigt die Meldung statt einer halb dekodierten Zeichenfolge.

Warum erreicht das 25-Zeichen-Beispiel sowohl nach der HTML-Maskierung als auch nach der URL-Maskierung 45?

Zwei verschiedene Rechnungen, derselbe Landepunkt. Die HTML-Maskierung addiert 4 zum einzigen Ampersand, 5 zu jedem der beiden doppelten Anführungszeichen und 3 zu jedem der beiden spitzen Klammern: 25 plus 20, 45. Die URL-Maskierung wandelt die vier Leerzeichen, den Ampersand, den Doppelpunkt, die beiden doppelten Anführungszeichen und die beiden spitzen Klammern, zehn Einzelzeichen, in zehn drei-Zeichen-Prozentsequenzen um, ebenfalls 25 plus 20, ebenfalls 45. Die Gleichheit ist eine Zufälligkeit dieser Eingabe, und die beiden 45-Zeichen-Ergebnisse sind verschiedene Zeichenfolgen: eine voll von Ampersand-Referenzen, die andere voll von Prozent-Tripel. Jedes Ziel zählte seine eigenen gefährlichen Zeichen, und beide erhoben zufällig dieselbe Summe.

Verwandte Artikel