Zum Inhalt springen

Zeichenketten maskieren

String Escaper

Maskiert und demaskiert Zeichenketten für JSON, JavaScript, SQL, Shell, CSV und reguläre Ausdrücke.

Maskiert ein Stück Text, damit es in ein String-Literal eingefügt werden kann – in JSON, JavaScript, Python, Java, C#, SQL, einem Shell-Befehl, einem CSV-Feld oder einem regulären Ausdruck – und wandelt es zurück. Jedes Ziel hat seine eigenen Regeln, und die Unterschiede zwischen ihnen sind genau die Stellen, an denen Injection-Bugs leben.

🔒 Läuft vollständig in Ihrem Browserescapestringjsonshell
Regeln
Richtung

RFC 8259: `\" \\ \/ \b \f \n \r \t` und `\uXXXX` für den Rest. Kein `\'`, kein `\x`, kein `\0`.

Text

Maskiert

Eingabe

0 Zeichen

Ausgabe

0 Zeichen

So funktioniert es

  1. Wählen Sie die Zielsprache

    Der Hinweis unter der Auswahl sagt, was dieses Ziel tatsächlich maskiert. JSON ist strenger als JavaScript; ein Template-Literal hat zwei zusätzliche Zeichen, um die man sich kümmern muss; einfach zitierte Shell ist ein anderes Problem als doppelt zitierte Shell.

  2. Fügen Sie den rohen Text ein

    Zeilenumbrüche, Anführungszeichen und Nicht-ASCII werden alle behandelt. Was herauskommt, ist das *Innere* des Literals – die umschließenden Anführungszeichen liefern Sie weiterhin selbst.

  3. Prüfen Sie „sauber umkehrbar“

    Die Angabe unter der Ausgabe wandelt das Ergebnis zurück und vergleicht es mit dem, was Sie eingegeben haben. Steht dort Nein, ist das Maskieren für dieses Ziel verlustbehaftet, und der String, den Sie einfügen, ist nicht der String, den Sie hatten.

Häufige Fragen

Macht Maskieren mein SQL sicher?

Nein. Ein Literal zu maskieren ist nicht dasselbe wie eine parametrisierte Abfrage, und dieses Werkzeug kann den Quoting-Modus Ihrer Datenbank, ihren Zeichensatz oder die Frage, ob der Wert irgendwo landet, wo ein Anführungszeichen nicht das Trennzeichen ist, nicht kennen. Verwenden Sie gebundene Parameter; verwenden Sie dies, um eine Abfrage zu lesen, nicht um eine für die Produktion zu bauen.

Warum verwendet der SQL-Modus keine Backslashes?

Weil Standard-SQL kein Backslash-Escape hat – ein Anführungszeichen wird verdoppelt geschrieben. Backslash-Maskierung ist eine MySQL-Erweiterung, und Code, der es voraussetzt, ist der Ursprung eines guten Teils aller Injections. Wenn Sie das MySQL-Verhalten brauchen, brauchen Sie es bewusst.

Was macht das Ziel `\uXXXX`?

Es macht aus jedem Nicht-ASCII-Zeichen ein `\uXXXX`-Escape, Surrogatpaare eingeschlossen. Seine nützlichste Richtung ist die umgekehrte: Eine .properties-Datei oder eine Logzeile, die eine reine ASCII-Pipeline zerlegt hat, liest sich nach dem Zurückwandeln wieder mit Umlauten.

Ist einfach zitierte Shell wirklich für jeden String sicher?

Für den String selbst ja – nichts innerhalb von POSIX-Einfachanführungszeichen hat eine Bedeutung, und ein Anführungszeichen wird als `'\''` geschrieben. Wogegen es nicht schützt, ist das aufgerufene Programm, das das Argument interpretiert, oder eine Shell, die nicht POSIX ist. Es ist eine Quoting-Regel, keine Sandbox.

Eingabe aus

Danach

Diese Tools nehmen an, was dieses hier erzeugt, das Ergebnis kann also direkt weiter.