2017-10-21 5 views
5

Wenn ich eine generierte Presigned URL habe, die abgelaufen ist, sollte ich get_headers() (in PHP) tun, um zu sehen, ob ein 403 Forbidden Fehler geworfen wird, sonst verwende die gleiche URL? Oder ist das eine schlechte Idee, weil es eine unnötige GET-Anfrage ist? Sollte ich immer nur eine neue Presigned URL immer neu generieren? Ich bin ein wenig verwirrt, weil es nicht viele Informationen darüber zu geben scheint.Amazon S3 - Wie überprüft man, ob vorsortierte URL abgelaufen ist?

Antwort

5

Die URL hat die Zeit, zu der sie abläuft.

Signatur Version 2

htt ps: //bucket.s3.amazonaws.com/foo.txt AWSAccessKeyId = AKIAABCDEFGHIJK & Verfällt = 1508608760 & Signature = xxxxxxxxxxx

Läuft ab gibt die Zeit in UTC an.

$ date -d @1508608760 
Sat Oct 21 17:59:20 UTC 2017 

können Sie den Wert extrahieren und sie mit der aktuellen Zeit in UTC vergleichen [time()], dann entscheiden, zu regenerieren oder nicht.


Signatur Version 4

htt ps: //s3.amazonaws.com/bucket/foo.txt X-Amz-Algorithmus = AWS4-HMAC-SHA256 & X-Amz-Verfällt = 3600 & X-Amz-Credential = AKIAJRZXXXXXXXXus-east-1% 2Fs3% 2Faws4_request & X-Amz-SignedHeaders = host & X-Amz-Date = 20171021T190750Z & X-Amz-Signature = 8b84ae9b59e9f8a8d7066ecc39e797c8dc29848abcdef61717

X-Amz-Date gibt die UTC-Zeit im ISO 8601-Format an.

Sie können den Wert extrahieren, in epoch/UTC konvertieren und mit der aktuellen Zeit in UTC [time()] vergleichen, dann entscheiden Sie sich für die Neugenerierung oder nicht.

+1

Tolle Lösung, weiß nicht, warum ich nicht daran gedacht hatte. Für mich ist 'Amz-Expires' die Ablaufzeit in Sekunden, während' X-Amz-Date' der Zeitstempel ist. –

+1

@ D-Marc 'X-Amz- *' ist das neuere Format, genannt Signature Version 4 Regionen, in denen AWS-Dienste vor etwa 2014 eingeführt wurden, unterstützen diese und den älteren Stil, Signature Version 2 genannt. –

Verwandte Themen