Eine hypothetische report.xlsx ist 8 KB groß und öffnet sich als Anmeldeseite. Das Programm hat eine Datei erfolgreich gespeichert, aber die beabsichtigte Tabelle nie erhalten. Ein Dateiname wird lokal gewählt; er ist kein Beleg dafür, was angekommen ist.

Machen Sie die Abnahme zu einem eigenen Schritt, bevor der temporäre Download veröffentlicht wird:

  1. Verlangen Sie eine erfolgreiche Übertragung und den erwarteten Antwortstatus. Bewahren Sie einen Fehler auf, statt die davor geschriebenen Bytes als vollständig zu behandeln.
  2. Vergleichen Sie den Inhalt mit dem erwarteten Artefakttyp. Eine Anmelde- oder Filterseite kann 200 zurückgeben. Der Content-Type kann falsch sein, und ein HTML-Präfix in einer Tabelle ist eine Warnung, die untersucht werden muss. Eine Datei, die mit einer HTTP-Statuszeile beginnt, deutet dagegen auf eine rohe Antwortrahmung hin.
  3. Validieren Sie die vollständigen gespeicherten Bytes gegen eine vertrauenswürdige Prüfsumme oder Signatur, sofern verfügbar. Erst nachdem die erforderlichen Prüfungen bestanden sind, sollte die Anwendung die endgültige Datei veröffentlichen oder verwenden.

Eine Hash-Berechnung ohne erwarteten Wert identifiziert nur die empfangenen Bytes. Eine unsignierte Prüfsumme, die über denselben nicht vertrauenswürdigen Weg geholt wurde, kann die Schwäche des Artefakts teilen; verwenden Sie eine unabhängige vertrauenswürdige Erwartung.

Auch bei Größenvergleichen ist Vorsicht geboten. Ein HTTP-Client kann die Inhaltkodierung beim Lesen dekodieren, sodass die resultierende Dateilänge durchaus von einem Header abweichen kann, der die kodierte Nachricht beschreibt. Vergleichen Sie die Erwartung des Herausgebers mit der tatsächlich gespeicherten Repräsentation.

Wenn ein Versuch fehlschlägt, bewahren Sie die temporäre Ausgabe nur für eine bewusste Fortsetzung auf oder verwerfen Sie sie. Unvollständige Bytes am endgültigen Pfad zu hinterlassen, zwingt das nächste Programm zu raten, ob sie brauchbar sind.

Ähnliche Artikel