Schutz der Datenintegrität mit Prüfsummen - AWS SDK für PHP

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Schutz der Datenintegrität mit Prüfsummen

Amazon Simple Storage Service (Amazon S3) bietet die Möglichkeit, beim Hochladen eines Objekts eine Prüfsumme anzugeben. Wenn Sie eine Prüfsumme angeben, wird diese zusammen mit dem Objekt gespeichert und kann beim Herunterladen des Objekts überprüft werden.

Prüfsummen bieten eine zusätzliche Ebene der Datenintegrität bei der Übertragung von Dateien. Mit Prüfsummen können Sie die Datenkonsistenz überprüfen, indem Sie sicherstellen, dass die empfangene Datei mit der Originaldatei übereinstimmt. Weitere Informationen zu Prüfsummen mit Amazon S3 finden Sie im Amazon Simple Storage Service-Benutzerhandbuch, einschließlich der unterstützten Algorithmen.

Sie haben die Flexibilität, den Algorithmus auszuwählen, der Ihren Anforderungen am besten entspricht, und das SDK die Prüfsumme berechnen zu lassen. Alternativ können Sie mithilfe eines der unterstützten Algorithmen einen vorab berechneten Prüfsummenwert angeben.

Anmerkung

Ab Version 3.337.0 von bietet das SDK standardmäßigen Integritätsschutz AWS SDK für PHP, indem es automatisch eine Prüfsumme für Uploads berechnet. CRC32 Das SDK berechnet diese Prüfsumme, wenn Sie keinen vorab berechneten Prüfsummenwert angeben oder wenn Sie keinen Algorithmus angeben, den das SDK zur Berechnung einer Prüfsumme verwenden soll.

Das SDK bietet auch globale Einstellungen für den Schutz der Datenintegrität, die Sie extern festlegen können. Weitere Informationen finden Sie im Referenzhandbuch und im Tools-Referenzhandbuch.AWS SDKs

Wichtig

Um mit dem CRC32C Algorithmus arbeiten zu können, erfordert Ihre PHP-Umgebung die Installation der AWS Common Runtime (AWS CRT) -Erweiterung.

Wir behandeln Prüfsummen in zwei Anforderungsphasen: beim Hochladen eines Objekts und beim Herunterladen eines Objekts.

Hochladen eines Objekts

Sie laden Objekte auf Amazon S3 hoch, indem Sie die PutObject-Methode von verwenden. S3Client Verwenden Sie das ChecksumAlgorithm Paar im Parameter-Array, um die Prüfsummenberechnung zu aktivieren und den Algorithmus anzugeben.

$client = new \Aws\S3\S3Client(['region' => 'us-east-2']); // See the note below. $result = $client->putObject([ 'Bucket' => 'amzn-s3-demo-bucket', 'Key' => 'key', 'ChecksumAlgorithm' => 'CRC32', 'Body' => 'Object contents to test the checksum.' ]);

Wenn Sie mit der Anfrage keinen Prüfsummenalgorithmus angeben, variiert das Prüfsummenverhalten je nach der Version des verwendeten SDK, wie in der folgenden Tabelle dargestellt.

Prüfsummenverhalten, wenn kein Prüfsummenalgorithmus bereitgestellt wird

PHP-SDK-Version Verhalten der Prüfsumme
früher als 3.337.0 Das SDK berechnet nicht automatisch eine CRC-basierte Prüfsumme und gibt sie in der Anfrage an.
3.337.0 oder höher

Das SDK verwendet den CRC32 Algorithmus zur Berechnung der Prüfsumme und stellt sie in der Anfrage bereit. Amazon S3 validiert die Integrität der Übertragung, indem es seine eigene CRC32 Prüfsumme berechnet und sie mit der vom SDK bereitgestellten Prüfsumme vergleicht. Wenn die Prüfsummen übereinstimmen, wird die Prüfsumme zusammen mit dem Objekt gespeichert.

Verwenden Sie einen vorberechneten Prüfsummenwert

Ein mit der Anfrage bereitgestellter vorberechneter Prüfsummenwert deaktiviert die automatische Berechnung durch das SDK und verwendet stattdessen den angegebenen Wert.

Das folgende Beispiel zeigt eine Anfrage mit einer vorberechneten Prüfsumme. SHA256

use Aws\S3\S3Client; use GuzzleHttp\Psr7; $client = new S3Client([ 'region' => 'us-east-1', ]); // Calculate the SHA256 checksum of the contents to be uploaded. $contents = 'Object contents to test the checksum.'; $body = Psr7\Utils::streamFor($contents); $sha256 = base64_encode(Psr7\Utils::hash($body, 'sha256', true)); $result = $client->putObject([ 'Bucket' => 'amzn-s3-demo-bucket', 'Key' => 'key', 'Body' => $body, 'ChecksumSHA256' => $sha256 ]);

Wenn Amazon S3 feststellt, dass der Prüfsummenwert für den angegebenen Algorithmus falsch ist, gibt der Service eine Fehlerantwort zurück.

Mehrteilige Uploads

Sie können Prüfsummen auch bei mehrteiligen Uploads verwenden.

Wie im folgenden Beispiel gezeigt, geben Sie den Prüfsummenalgorithmus als Schlüssel-Wert-Paar im Array des Konstruktors an. paramsMultipartUploader

$s3Client = new S3Client([ 'region' => 'us-east-1' ]); $stream = fopen("/path/to/large/file", "r"); $mpUploader = new MultipartUploader($s3Client, $stream, [ 'bucket' => 'amzn-s3-demo-bucket', 'key' => 'key', 'params' => ['ChecksumAlgorithm' => 'CRC32'] ]);

Herunterladen eines Objekts

Wenn Sie die GetObject GetObject getObject(input:) verwenden, um ein Objekt herunterzuladen, validiert das SDK automatisch die Prüfsumme, wenn der Wert des Schlüssels lautet. ChecksumMode enabled

Die Anfrage im folgenden Codeausschnitt weist das SDK an, die Prüfsumme in der Antwort zu validieren, indem es die Prüfsumme berechnet und die Werte vergleicht.

$result = $client->getObject([ 'Bucket' => 'amzn-s3-demo-bucket', 'Key' => 'test-checksum-key', 'ChecksumMode' => 'enabled', ]);
Anmerkung

Wenn das Objekt nicht mit einer Prüfsumme hochgeladen wurde, findet keine Überprüfung statt.