Deutsch

Was das Developer Data Toolkit nicht kann

Jedes Dienstprogramm hier hat einen Vorteil. Auf dieser Seite erfahren Sie, wo jeder aufhört, warum und was Sie stattdessen verwenden sollten – damit Sie es herausfinden, bevor Sie sich darauf verlassen, und nicht erst danach.

Einschränkungen, die für alles gelten

Die gesamte Verarbeitung erfolgt in einem Browser-Tab und nutzt den Speicher Ihres Geräts. Das macht den Datenschutzanspruch wahr und ist auch die Quelle aller unten aufgeführten Größenbeschränkungen. Jedes Dienstprogramm begrenzt seine Eingabe explizit und lehnt übergroße Arbeiten mit einer klaren Botschaft ab, anstatt die Seite einzufrieren.

Zwei Funktionen benötigen einen sicheren Kontext – https:// oder localhost –, da dies der einzige Ort ist, an dem Browser die Web Crypto API offenlegen: SHA-Hashing und UUID-Generierung. Wenn Sie über einfaches HTTP an einer LAN-Adresse geöffnet werden, werden Ihnen beide mitteilen, dass sie nicht verfügbar sind. Keines von beiden ersetzt eine handgeschriebene Implementierung, da es sich lohnt, auf die eigene des Browsers zu vertrauen.

Es gibt keinen Servicemitarbeiter, daher benötigt die erste Ladung eine Netzwerkverbindung. Danach ist für das Toolkit nichts mehr erforderlich.

JSON

Nur strenger RFC 8259. Kommentare, abschließende Kommas, Zeichenfolgen in einfachen Anführungszeichen, Schlüssel ohne Anführungszeichen und NaN oder Infinity werden alle abgelehnt – dies sind JSON5- oder JavaScript-Objektliteralfunktionen, nicht JSON. Der Prüfer benennt, welches gefunden wurde, sodass die Ablehnung zumindest umsetzbar ist.

Zahlen werden analysiert, wenn sich IEEE-754 verdoppelt, was JSON.parse tut. Ganzzahlen über 2^53 verlieren beim Hin- und Rücklauf an Präzision. Wenn Sie große Bezeichner verarbeiten, müssen diese Zeichenfolgen im JSON selbst sein – es gibt für kein JavaScript-Tool die Möglichkeit, einen Wert wiederherzustellen, den das Format nicht darstellen kann.

Die Schlüsselreihenfolge bleibt wie geschrieben erhalten und die optionale Sortierung gilt nur für Objektschlüssel. Die Array-Reihenfolge wird nie geändert, da durch die Neuordnung eines Arrays die Daten und nicht ihre Darstellung geändert werden.

Dokumente mit mehr als etwa 8 Millionen Zeichen werden abgelehnt.

Syntaxkonverter

Neun gezielte Konvertierungen – JSON zu YAML, YAML zu JSON, JSON zu XML, XML zu JSON, JSON zu TOML, TOML zu JSON, YAML zu TOML, TOML zu YAML, JSON zu CSV. Alles, was nicht auf dieser Liste steht, wird mit einem Satz abgelehnt, der die tatsächlich vorhandene Route nennt. Die vollständigen Konventionen finden Sie auf der Konverterseite. In diesem Abschnitt wird angegeben, wo die Konvertierungen enden.

CSV wird geschrieben und nie gelesen. Wenn man es liest, muss man ein Trennzeichen, einen Anführungszeichendialekt, eine Kopfzeile und einen Typ für jede Zelle erraten – bei vier Vermutungen macht ein Konverter stillschweigend einen Fehler.

Kommentare gehen in alle Richtungen und in jedem Format verloren, in dem sie vorhanden sind.

YAML ist mit einem eingeschränkten Schema geladen, das nur JSON-förmige Daten erzeugen kann. Benutzerdefinierte und sprachspezifische Tags – !!js/function, !!python/object/apply, !!binary, !!timestamp, !!set, !!omap – werden abgelehnt. Das ist Absicht: Ein Loader, der diese erstellt, ist ein Konstruktor für beliebige Objekte.

Unter dem Standardschema JSON sind „~“ und ein leerer Wert Zeichenfolgen und nicht Null, und „yes“ ist die Zeichenfolge „yes“. Die Option „Kernschema“ löst diese Probleme so auf, wie es die meisten Leute erwarten. Beide sind sicher; Sie unterscheiden sich in der Skalarinterpretation, und das Tool erklärt, was zum Zeitpunkt der Auswahl welches ist. Keiner von beiden liest NO als falsch – das ist ein YAML 1.1 Verhalten und das ist YAML 1.2.

Ein YAML-Stream mit mehreren Dokumenten wird zu einem Array von Dokumenten, da kein anderes Format hier über einen Stream verfügt. Anker und Aliase werden aufgelöst und nicht beibehalten, ein rekursiver Alias ​​wird abgelehnt und ein Dokument, das sich über eine Million Werte hinaus erweitert, sobald seine Aliase befolgt werden, wird abgelehnt – das YAML-Muster „Milliarde Lacher“. Ein wiederholter Zuordnungsschlüssel behält den letzten Wert bei, und das Tool sagt dies.

YAML Infinity und NaN haben keine Darstellung in irgendeinem Zielformat. Anstatt JSON.stringify stillschweigend null schreiben zu lassen, konvertiert das Tool und warnt Sie, dass es passiert ist.

Ein XML-Dokument, das einen DOCTYPE enthält, wird komplett abgelehnt, harmlose Dokumente eingeschlossen, sodass keine externe Entität jemals aufgelöst und keine Entitätskette jemals erweitert werden kann. Es gibt keine Möglichkeit, dies zuzulassen. Gemischter XML-Inhalt verliert die Position von Text relativ zu untergeordneten Elementen, ein einzelnes wiederholtes Element kann nicht von einem nicht wiederholten unterschieden werden und jeder Wert ist eine Zeichenfolge, sofern die Typinferenz nicht aktiviert ist.

TOML hat vier zeitliche Typen, die JSON, YAML und XML nicht haben. Jeder wird zur RFC-Zeichenfolge 3339, als die er geschrieben wurde, sodass ein TOML-Roundtrip diese Werte in Zeichenfolgen ändert. Es gibt keinen verlustfreien Weg. TOML hat keine Null, daher werden Nullschlüssel aus der Ausgabe von TOML entfernt. Das Stammverzeichnis eines TOML-Dokuments muss eine Tabelle sein, daher kann ein JSON-Array oder -Skalar überhaupt nicht zu TOML werden. Ganzzahlen nach 2^53 werden zu Zeichenfolgen, anstatt stillschweigend gerundet zu werden.

CSV kann eine leere Zeichenfolge nicht von einer Null unterscheiden. Verschachtelte Werte werden zu gepunkteten Spaltennamen zusammengefasst, sodass ein Schlüssel, der bereits einen Punkt enthält, einen mehrdeutigen Namen erzeugt, vor dem gewarnt und nicht maskiert wird. Textzellen, die mit =, +, -, @, einem Tabulator oder einem Wagenrücklauf beginnen, wird ein Apostroph vorangestellt, da sie in Tabellenkalkulationen als Formeln ausgeführt werden.

Die Eingabe ist pro Format begrenzt: 8 Millionen Zeichen für JSON, 4 Millionen für XML, 2 Millionen für YAML und TOML. Die Ausgabe von CSV ist auf 100,000 Zeilen und 2,000 Spalten begrenzt.

Base64

Nur Text. Hier gibt es keinen Datei-Upload: Um eine Datei zu kodieren, müssten Sie sie lesen, und dieses Toolkit basiert auf einem Textfeld. Verwenden Sie dazu ein dateiorientiertes Tool.

Die Dekodierung erzeugt Text, wenn die Bytes gültig sind, UTF-8, und meldet einen sauberen Fehler, wenn dies nicht der Fall ist. An diesem Punkt zeigt die Byte-Ansicht stattdessen das Hex an. Eine beliebige binäre Nutzlast ist kein Text, und wenn man etwas anderes vortäuscht, würde sie beschädigt werden.

Eingaben über etwa 4 Millionen Zeichen werden abgelehnt.

URL-Kodierung

Die drei angebotenen Regeln – Komponente, Gesamt-URL und Form – sind die drei, die von der Plattform definiert werden. Anwendungsspezifische Varianten (AWS SigV4-Kanonisierung, OAuth 1.0a-Prozentkodierung) unterscheiden sich geringfügig und werden nicht bereitgestellt.

Der URL-Inspektor benötigt eine absolute URL mit einem Schema. Ein relativer Pfad kann nicht in Host, Pfad und Abfrage zerlegt werden, da er diese nicht enthält.

Internationalisierte Domänennamen werden angezeigt, wenn der Browser sie normalisiert. Dabei handelt es sich möglicherweise um Punycode und nicht um das Originalskript.

HTML-Entitäten

Die benannte Entitätstabelle deckt die praktische Teilmenge ab – markupkritische Zeichen, Typografie, Währung, Pfeile, Mathematik, Griechisch und Lateinisch – 1 – nicht alle 2,231 benannten HTML5-Referenzen. Namen außerhalb davon werden für Sie aufgelistet und genau so belassen, wie sie geschrieben sind, denn ein Zeichen zu erfinden wäre schlimmer, als den Text in Ruhe zu lassen.

Ein abschließendes Semikolon ist erforderlich. HTML5 toleriert einige Legacy-Referenzen ohne solche, aber die korrekte Auflösung dieser hängt vom umgebenden Markup ab, über das ein eigenständiges Texttool nicht verfügt.

Die Dekodierung erfolgt in einem einzigen Durchgang, also „&amp;lt;“ dekodiert in den Text „&lt;“ und nicht in "<". Das ist richtig: Die Doppelkodierung war vermutlich beabsichtigt.

Dies maskiert Text für HTML. Es ist kein HTML-Desinfektionsmittel – es entfernt nicht ein Dokument voller Markups und entfernt die gefährlichen Teile. Das ist eine andere und viel schwierigere Aufgabe.

Zeitstempel

Die Einheitenerkennung ist eine Heuristik: 10^11 und höher werden als Millisekunden gelesen. Es wird immer angezeigt und ist immer überschreibbar, es handelt sich jedoch um eine Vermutung bei mehrdeutigen Eingaben.

Mikrosekunden- und Nanosekunden-Zeitstempel, die einige Datenbanken ausgeben, werden nicht erkannt. Teilen Sie zuerst durch 1,000 oder 1,000,000.

Konvertierungen verwenden POSIX-Zeit, die keine Schaltsekunden hat – 23:59:60 existiert hier nicht, da dies in keinem Unix-Zeitstempel der Fall ist.

Beim Lokalzeit-Rendering wird die konfigurierte Zone Ihres Browsers verwendet. Sie können keine beliebige IANA-Zone zum Rendern auswählen.

Werte, die mehr als etwa ±273,790 Jahre ab der Epoche betragen, überschreiten das, was JavaScript-Daten darstellen können, und werden abgelehnt.

UUIDs

Es wird nur die Version 4 (zufällig) generiert. Die Versionen 1 und 6 benötigen eine MAC-Adresse und eine stabile Taktsequenz; Version 7 benötigt einen monotonen Zähler, um etwas wert zu sein; Die Versionen 3 und 5 sind namensbasiert und benötigen einen Namespace und einen Hash, den der Browser für diesen Zweck nicht bereitstellt.

Der Validator erkennt die kanonische Textform und meldet Version und Variante. Es kann Ihnen nicht sagen, ob eine UUID gut generiert wurde – eine Version-4-UUID, die von einem schwachen Generator erzeugt wurde, sieht genauso aus wie eine gute.

Ein Stapel ist auf 500-Werte begrenzt.

Ohne Web Crypto wird nichts generiert. Ein Rückgriff auf Math.random() würde vorhersehbare Identifikatoren erzeugen, weshalb das Tool dies stattdessen ablehnt.

SHA-Hashes

Nur SHA-1, SHA-256, SHA-384 und SHA-512, da SubtleCrypto diese implementiert. MD5 fehlt aus Notwendigkeit und freiwillig.

SHA-1 ist für die Legacy-Interoperabilität vorhanden und wird überall dort, wo es erscheint, als kryptografisch fehlerhaft gekennzeichnet. Verwenden Sie es nicht für Dinge, bei denen es auf die Sicherheit ankommt.

Nur Text – kein Datei-Hashing, aus dem gleichen Grund verfügt Base64 über keine Dateieingabe.

Kein HMAC, keine Schlüsselableitung, kein Passwort-Hashing. Passwörter benötigen eine langsame, speicherintensive Funktion wie Argon2id, scrypt oder bcrypt; Ein schneller Allzweck-Hash ist das falsche Werkzeug und die Verwendung eines solchen ist eher ein schwerwiegender als ein kleiner Fehler.

Textunterschied

Nur Vergleich auf Zeilenebene. Innerhalb einer geänderten Zeile erfolgt keine Hervorhebung auf Wort- oder Zeichenebene.

Eine geänderte Zeile erscheint als Entfernung plus Hinzufügung, so wie sie in einem zeilenbasierten Bearbeitungsskript dargestellt wird.

Identische Anfangs- und Endzeilen werden vor dem Vergleich gekürzt, sodass große Dateien, die sich an einer Stelle unterscheiden, schnell verarbeitet werden können. Was übrig bleibt, ist auf 2,000 unterschiedliche Zeilen pro Seite begrenzt, jenseits dieser Zeilen lehnt das Tool ab, anstatt eine Zuweisung zu versuchen, die die Registerkarte zerstören würde.

Es gibt keine Drei-Wege-Zusammenführung, keine Patch-Anwendung und kein Syntaxbewusstsein.

JWT-Dekodierung

Nur Dekodierung. Signaturen werden niemals überprüft, und daran wird sich auch nichts ändern – die Begründung ist im Token-Leitfaden dargelegt.

Verschlüsselte Token (JWE, fünf Segmente) können ohne den Schlüssel nicht entschlüsselt werden. Das Tool erkennt sie und stoppt.

Verschachtelte Token werden nicht automatisch entpackt; Dekodierung des inneren Tokens separat.

Ansprüche außerhalb des registrierten Satzes von RFC 7519 werden ohne Interpretation angezeigt, da ihre Bedeutung anwendungsspezifisch ist.

Token mit mehr als 200,000 Zeichen werden abgelehnt.

HTML-WYSIWYG-Editor

Der Sanitiser ist eine Zulassungsliste für die eigene Ausgabe dieses Editors, die auf einem String-Tokeniser und nicht auf einem vollständigen HTML5-Parser basiert. Es handelt sich nicht um einen Allzweck-XSS-Filter, und es wäre ein Fehler, ihn als solchen zu verwenden: Ein Browser kann eine absichtlich fehlerhafte Nutzlast in einen anderen Baum analysieren als dieser Tokenisierer. Nicht vertrauenswürdiges HTML gehört in einen serverseitigen Sanitiser, der gegen einen echten Parser ausgeführt wird.

Nur die aufgelisteten Elemente bleiben erhalten: Absätze, Überschriften, Hervorhebungen, Listen, Links, Zitate, Code und eine Handvoll Inline-Tags. Alles andere wird ausgepackt, sodass sein Text erhalten bleibt, sein Tag jedoch nicht. Bilder, Tabellen, Farben, Schriftarten und Inline-Stile fehlen alle und es gibt keine Möglichkeit, sie hinzuzufügen.

Skript, Stil, Iframe, Objekt, Einbettung, Formular, SVG, Mathematik und die anderen Rohtext- oder Fremdinhaltselemente werden zusammen mit allem darin entfernt.

Links können http, https, mailto, tel, ftp oder eine relative Adresse verwenden. Alles andere – einschließlich javascript:, data: und blob: – wird abgelehnt, ebenso wie eine Adresse, die eine Zeichenreferenz außerhalb der Entitätstabelle dieses Tools enthält.

Die Bearbeitungsoberfläche verwendet document.execCommand. Es ist veraltet, sein Ersatz ist in keinem Browser implementiert und das Verhalten unterscheidet sich zwischen den Engines, insbesondere bei verschachtelten Listen. Der Quellmodus ist die Notausstiegsmöglichkeit, wenn ein Befehl das Falsche ausführt.

Dokumente mit mehr als 500,000 Zeichen werden abgelehnt.

Chmod-Rechner

Nur die zwölf Berechtigungsbits: Lesen, Schreiben und Ausführen für Besitzer, Gruppe und andere, plus Setuid, Setgid und Sticky. Zugriffskontrolllisten, erweiterte Attribute, SELinux-Kontexte, Funktionen und Windows-ACLs liegen alle außerhalb dessen, was ein Modus ausdrücken kann.

Der Befehl, den es erstellt, ist Text, den Sie kopieren können. Es wird nichts ausgeführt und keine Datei auf Ihrem Computer wird gelesen oder geändert – das Pfadfeld dient nur zum Ausfüllen des Befehls.

Es berechnet keine umask-Arithmetik und weiß nicht, welchen Modus eine bestimmte Datei derzeit hat, da eine Webseite Ihr Dateisystem nicht sehen kann.

Docker zum Verfassen ausführen

Ein Docker-Ausführungsbefehl wird zu einem Dienst. Multi-Container-Setups müssen zusammengestellt werden, indem jeder Befehl konvertiert und die Ergebnisse selbst zusammengeführt werden.

--mount, --gpus, --device, --link, --volumes-from, --network-alias und ein Dutzend anderer Flags haben keine Entsprechung, die dieser Konverter schreiben wird. Jedes erzeugt eine Warnung, die die Flagge benennt, anstatt zu verschwinden.

Ein Flag, das der Konverter nicht erkennt, wird so behandelt, als ob es keinen Wert annimmt, und weist dies in einer Warnung darauf hin. Wenn es einen brauchte, wurde dieser Wert falsch interpretiert – entfernen Sie die Flagge und fügen Sie ihren Effekt von Hand hinzu.

Es wird nichts ausgeführt, ausgewertet oder an eine Shell übergeben: Der Befehl wird von einem Tokenisierer aufgeteilt, der Anführungszeichen versteht und sonst nichts. Der Konverter kann daher $VARIABLES nicht erweitern, $(Subshells) auflösen oder eine --env-Datei lesen, da alle drei bedeuten würden, etwas auszuführen oder eine Datei zu öffnen.

Die Ausgabe wird auf korrekte YAML-Zitate überprüft, aber nicht anhand der Compose-Spezifikation validiert, und es wird kein Bild kontaktiert, um zu bestätigen, dass es vorhanden ist.

Befehle mit mehr als 100,000 Zeichen werden abgelehnt.

Crontab-Generator

Nur Crontab-Syntax mit fünf Feldern. Quarz- und systemd-Ausdrücke mit sechs Feldern werden mit einer Erklärung abgelehnt, ebenso wie die nicht standardmäßigen Operatoren L, W, # und ? sowie @reboot, für das es keinen Zeitplan für die Vorschau gibt.

Die Felder „Tag des Monats“ und „Wochentag“ werden mit ODER kombiniert, wenn beide eingeschränkt sind, und entsprechen dem Vixie-Cron. Das Tool warnt, wann immer dies zutrifft, da dies die häufigste Fehlinterpretation einer Cron-Zeile ist.

Die nächsten Ausführungszeiten ergeben sich aus den internationalen Zeitzonendaten des Browsers. Es handelt sich dabei um eine Vorschau, nicht um ein Versprechen: Die Maschine, auf der cron läuft, verwendet möglicherweise eine andere Zone, eine andere tzdata-Version oder läuft gerade einfach nicht.

Die Vorschau sucht fünf Jahre im Voraus. Ein seltenerer Zeitplan – zum Beispiel 29 Februar – zeigt weniger als fünf Läufe.

Was passiert mit dem, was Sie einfügen?

  • Jede Konvertierung, jeder Hash, jede Dekodierung und jeder Diff wird in Ihrem Browser-Tab ausgeführt. Es werden keine Eingaben hochgeladen, protokolliert oder auf einem Server gespeichert, da nach dem Laden der Seite kein Server beteiligt ist.
  • Hashes stammen von der browsereigenen Web Crypto-Implementierung und UUIDs von seinem kryptografisch sicheren Zufallsgenerator. Bei beiden handelt es sich nicht um einen Netzwerkanruf.
  • Nichts, was Sie eingeben, wird in den lokalen Speicher oder in ein Cookie geschrieben. Beim Neuladen der Seite wird diese verworfen; Wenn Sie die Registerkarte schließen, wird sie verworfen.
  • Siteweite Analysen laufen nur auf dem konfigurierten kanonischen Produktionshost und werden in der Datenschutzrichtlinie offengelegt; Lokale und Vorschau-Hosts lehnen dies ab. Eingefügte Werte, Token, URLs und Dateiinhalte sind von den eigenen Analyseereignissen von ToolAcre ausgeschlossen. Werbung ist in der aktuellen Konfiguration deaktiviert.
  • Das heißt: Ein JWT oder ein API-Schlüssel ist ein Live-Zugangsdatensatz. Es ist eine sichere Angewohnheit, niemals etwas in eine Webseite einzufügen, die Sie nicht geschrieben haben, egal wie vertrauenswürdig die Behauptungen sind – auch diese hier.

Fragen

Werden Sie den Datei-Upload für Hashing oder Base64 hinzufügen?

Möglicherweise, aber es handelt sich um eine andere Art von Tool – Dateilesen, Fortschrittsberichte, Speicherwächter für große Dateien – und nicht um eine kleine Ergänzung zu einem Textfeld. Heute lautet die Antwort nein.

Werden Sie dem JWT-Decoder eine Signaturüberprüfung hinzufügen?

Nein. Für die Verifizierung sind der Schlüssel des Ausstellers und ein außerhalb des Tokens angehefteter Algorithmus erforderlich, und eine Webseite, die nach beidem fragt, fragt nach der Möglichkeit, Token zu fälschen. Die Einschränkung liegt in der Funktion.

Warum große Eingaben ablehnen, anstatt einfach nur langsam zu sein?

Denn "slow" in einem Browser-Tab bedeutet, dass die Seite nicht reagiert, und auf einem Telefon bedeutet es oft, dass der Tab geschlossen wird und Ihre Eingaben nicht mehr möglich sind. Eine klare Absage mit einem festgelegten Limit ist sinnvoller als ein Spinner, der nie endet.

Kann ich das offline nutzen?

Nachdem die Seite geladen wurde, ja – nichts, was das Toolkit tut, benötigt das Netzwerk. Da es keinen Servicemitarbeiter gibt, ist für den ersten Ladevorgang eine Verbindung erforderlich.

Einschränkungen

  • Diese Seite ist selbst die Liste der Einschränkungen. In jedem Abschnitt oben wird angegeben, was ein Dienstprogramm nicht leisten kann.
  • Grenzwerte werden im Code erzwungen und in der Schnittstelle gemeldet, nicht nur hier dokumentiert.