Gültige Eingaben können Unterschiedliches bedeuten
Ein JSON-Dokument kann Objekt, Array oder einfacher Wert sein. null ist deshalb gültig, selbst wenn der Vertrag ein Objekt fordert. Manche Zahlen überschreiten JavaScripts Ganzzahlpräzision; wiederholte Eigenschaftsnamen werden nicht überall gleich interpretiert.
| Beispieleingabe | Syntaxprüfung | Verbleibende Prüfung |
|---|---|---|
| {"ok":true} | Gültig. | Entspricht der Wert dem Vertrag? |
| {"ok":true,} | Ungültig: abschließendes Komma. | Fehler ausdrücklich behandeln. |
| null | Gültig. | Erlaubt der Vertrag null? |
| {"id":9007199254740993} | Gültige Zahl, Präzisionsrisiko in JavaScript. | Für diese Kennung eine Zeichenfolge vorsehen. |
| {"a":1,"a":2} | Doppelte Namen: nicht portable Interpretation. | Ablehnungsregel definieren und anwenden. |
Jeden Empfangsschritt kontrollieren
- Nutzen Sie einen gepflegten JSON-Parser, niemals eval. Prüfen Sie HTTP-Status, erwarteten Inhaltstyp, Größenlimits und ausdrückliche Behandlung fehlender oder fehlerhafter Inhalte.
- Validieren Sie danach den Vertrag: Wurzeltyp, Pflichtfelder, zulässige Werte und Unterschiede zwischen einem fehlenden Feld, null und 0. Bewahren Sie lange Kennungen als Zeichenfolgen, wenn der Vertrag dies vorsieht.
- Definieren Sie Tiefen- und Ressourcenlimits, Regeln für doppelte Namen und Fehlerbehandlung. Fügen Sie empfangene Zeichenfolgen nicht ohne geeigneten Schutz in HTML oder Abfragen ein.
Nützliche Fehler ohne Datenoffenlegung
Testen Sie Teilantworten, Versionswechsel und Unicode. Protokollieren Sie minimalen Kontext statt Geheimnisse oder vollständiger Inhalte. Ein Dekodierfehler darf weder als erfolgreiches leeres Ergebnis erscheinen noch die gesamte Verarbeitung unbemerkt stoppen.
Primärquellen
Protokollieren Sie JSON-API-Fehler, ohne die Nutzdaten preiszugeben.
Ein JSON-Body kann Kennungen, Geheimnisse oder personenbezogene Daten enthalten. Für die Diagnose werden häufig Ereignistyp, Route, Ergebnis, Korrelationskennung und eine nicht sensible Fehlerbeschreibung anstelle der vollständigen Nutzdaten benötigt.
- Klassifizieren Sie Felder und maskieren Sie diejenigen, die für die Diagnose nicht benötigt werden.
- Testen Sie Parsing- und Schemafehler mit synthetischen Werten.
- Prüfen Sie, ob Fehlerprotokolle und Exporte keine vollständigen Nutzdaten kopieren.
Primärquelle: ACSC and partners — Event logging and threat detection. Verwandte Methode: den praktischen Leitfaden lesen.
Personalisierte JSON- und Cache-Schlüssel
Zusätzlicher Prüfpunkt: Personalisierte JSON- und Cache-Schlüssel. Eine Richtlinie auf Darstellungsebene und Tests suchen nach kontoübergreifenden Leckagen und veralteten Inhalten nach Änderungen.
- Aufbewahrungsdauer wählen: RFC 9111 unterscheidet Direktiven: „no-cache“ erfordert Validierung vor der Wiederverwendung, „no-store“ verbietet die entsprechende HTTP-Speicherung, und „unqualifiziertes private“ schließt gemeinsam genutzten Speicher aus. Keine der Optionen allein garantiert die Vertraulichkeit des Systems.
- Schlüssel prüfen: Prüfen Sie, ob Methode, URI und Dimensionen eine Darstellung ändern. „Vary“ betrifft Anfragefelder; es handelt sich nicht um eine Autorisierung. Suchen Sie nach ausgelassener Sprache, Formatverhandlung und Kontokontext in den Anwendungsschichten.
Primärquelle: IETF — RFC 9111, HTTP Caching. Verwandte Methode: den praktischen Leitfaden lesen.
Auch Fortsetzungsfelder validieren
Beim Parsing müssen Kennungen und Fortsetzungsdaten erhalten bleiben. Lesbares JSON kann kurze Seiten oder unerwartete Token liefern; prüfen Sie den Vertrag vor Abschluss.
- Kurze Seiten und fehlende Abschlussfelder testen.
- Typen und Werte von Kennungen unverändert erhalten.
- Wiederholte Token, Kürzung und Stapelwiederaufnahme erkennen.
Nachvollziehbarer Abnahmefall
Fiktives Beispiel: Diese Daten beschreiben keine Kunden oder beobachteten Ergebnisse.
Falldaten anzeigen
{
"page_1_ids": [
"A",
"B"
],
"page_2_ids": [
"B",
"C"
],
"next_cursor": "c2",
"empty_page_has_next_cursor": true
}Erwartete Entscheidung
B wiederholt sich. Identitäten prüfen und Cursor auch nach einer leeren Seite weiterverfolgen.
Prüfverfahren
- Filter, stabile Ordnung und Objektidentität festlegen.
- Duplikat und leere Seite mit Cursor testen.
- Kennungen und tatsächliche Endbedingung aufbewahren.
Primärquelle: Google AIP-158 — Pagination. Verwandte Methode: den praktischen Leitfaden lesen.
