Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Klassen TarReader validerar nu kontrollsumman för TAR-arkivposter under läsprocessen. Om en posts kontrollsumma är ogiltig, TarReader genererar en InvalidDataException. Den här ändringen förbättrar dataintegriteten genom att se till att skadade eller manipulerade TAR-filer identifieras och flaggas under bearbetningen.
Version lanserad
.NET 11 Förhandsversion 1
Tidigare beteende
Tidigare, när du läste ett TAR-arkiv med en ogiltig kontrollsumma, TarReader ignorerade matchningsfelet för kontrollsumman och fortsatte att bearbeta arkivet utan att utlösa ett undantag.
Exempelkod:
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.
}
Om TAR-filen bad-cksum.tar innehåller en post med en ogiltig kontrollsumma skulle koden bearbeta posten utan någon indikation på problemet.
Nytt beteende
Från och med .NET 11, när du läser ett TAR-arkiv med en ogiltig kontrollsumma, kastas InvalidDataException och TarReader slutar bearbeta arkivet. Undantagsmeddelandet anger verifieringsfelet för kontrollsumman.
Typ av brytande ändring
Den här ändringen är en beteendeförändring.
Orsak till ändring
Den här ändringen infördes för att förbättra bibliotekets System.Formats.Tar tillförlitlighet och säkerhet. Genom att verifiera kontrollsummor kan du identifiera och förhindra användning av skadade eller manipulerade TAR-filer, vilket säkerställer TarReader att endast giltiga data bearbetas. Mer information finns i dotnet/runtime#118577 och dotnet/runtime#117455.
Rekommenderad åtgärd
Om programmet förlitar sig på TarReader att bearbeta TAR-arkiv:
- Uppdatera koden för att hantera det undantag InvalidDataException som kan kastas när kontrollsummeverifiering misslyckas.
- Kontrollera att TAR-filerna som bearbetas är giltiga och har rätt kontrollsummor. Om du stöter på kontrollsummafel kontrollerar du integriteten för KÄLL-TAR-filerna.
- Om du behöver bearbeta TAR-filer med ogiltiga kontrollsummor för specifika scenarier kan du överväga att implementera anpassad felhantering eller förbearbeta filerna för att korrigera kontrollsummorna.
Uppdaterat exempel:
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.
}