Freigeben über


TAR-Lese-APIs überprüfen Header-Prüfsummen beim Lesen

Die TarReader Klasse überprüft nun die Prüfsumme der TAR-Archiveinträge während des Lesevorgangs. Wenn die Prüfsumme eines Eintrags ungültig ist, wirft TarReader ein InvalidDataException. Diese Änderung verbessert die Datenintegrität, indem sichergestellt wird, dass beschädigte oder manipulierte TAR-Dateien während der Verarbeitung erkannt und gekennzeichnet werden.

Eingeführt in Version

.NET 11 Preview 1

Vorheriges Verhalten

Beim Lesen eines TAR-Archivs mit einer ungültigen Prüfsumme TarReader wurde die Prüfsummenungültigkeit ignoriert, und die Verarbeitung des Archivs wurde fortgesetzt, ohne eine Ausnahme auszulösen.

Codebeispiel:

using System.Formats.Tar;
using System.IO;

using var stream = File.OpenRead("bad-cksum.tar");
using var reader = new TarReader(stream);

while (reader.GetNextEntry() is not null)
{
    // Process entries, even if the checksum is invalid.
}

Wenn die TAR-Datei bad-cksum.tar einen Eintrag mit einer ungültigen Prüfsumme enthielt, würde der Code den Eintrag ohne Angabe des Problems verarbeiten.

Neues Verhalten

Ab .NET 11 löst TarReader beim Lesen eines TAR-Archivs mit einer ungültigen Prüfsumme ein InvalidDataException aus und beendet die Verarbeitung des Archivs. Die Ausnahmemeldung gibt den Prüfsummenüberprüfungsfehler an.

Art der einschneidenden Änderung

Diese Änderung ist eine Verhaltensänderung.

Grund für Änderung

Diese Änderung wurde eingeführt, um die Zuverlässigkeit und Sicherheit der System.Formats.Tar Bibliothek zu verbessern. Durch die Validierung von Prüfsummen kann die Nutzung beschädigter oder manipulierte TAR-Dateien erkannt und verhindert werden, um sicherzustellen, dass nur gültige Daten verarbeitet werden. Weitere Informationen finden Sie unter dotnet/runtime#118577 und dotnet/runtime#117455.

Wenn Ihre Anwendung auf TarReader für die Verarbeitung von TAR-Archiven angewiesen ist:

  • Aktualisieren Sie den Code so, dass die Ausnahme InvalidDataException möglicherweise ausgelöst wird, wenn eine Prüfsummenvalidierung fehlschlägt.
  • Stellen Sie sicher, dass die verarbeiteten TAR-Dateien gültig sind und über korrekte Prüfsummen verfügen. Wenn Prüfsummenfehler auftreten, überprüfen Sie die Integrität der TAR-Quelldateien.
  • Wenn Sie TAR-Dateien mit ungültigen Prüfsummen für bestimmte Szenarien verarbeiten müssen, sollten Sie eine benutzerdefinierte Fehlerbehandlung implementieren oder die Dateien vorverarbeiten, um die Prüfsummen zu korrigieren.

Aktualisiertes Beispiel:

using System.Formats.Tar;
using System.IO;

try
{
    using var stream = File.OpenRead("archive.tar");
    using var reader = new TarReader(stream);

    while (reader.GetNextEntry() is not null)
    {
        // Process entries.
    }
}
catch (InvalidDataException ex)
{
    Console.WriteLine($"Error reading TAR archive: {ex.Message}");
    // Handle invalid checksum scenario.
}

Betroffene APIs