Wie kann ich geschützte Amazon S3-Bilder auf meiner sicheren Website mit PHP anzeigen?

Ich versuche Bilder für meine Website von meinem Rechner auf Amazon S3-cloud-hosting. Diese Bilder sind von client-Arbeit-sites und ist nicht öffentlich zugänglich. Ich möchte, dass Sie angezeigt werden, auf meiner Website vorzugsweise mit das PHP-SDK von Amazon erhältlich.

Bisher habe ich in der Lage, ein Skript für die Konvertierung, so dass ich nach oben schauen Datensätze in meiner Datenbank, schnappen Sie sich den Pfad der Datei, benennen Sie es entsprechend aus und senden es an Amazon zu stellen.

    //upload to s3
$s3->create_object($bucket, $folder.$file_name_new, array(
    'fileUpload' => $file_temp,
    'acl' => AmazonS3::ACL_PRIVATE, //access denied, grantee only own
    //'acl' => AmazonS3::ACL_PUBLIC, //image displayed
    //'acl' => AmazonS3::ACL_OPEN, //image displayed, grantee everyone has open permission
    //'acl' => AmazonS3::ACL_AUTH_READ, //image not displayed, grantee auth users has open permissions
    //'acl' => AmazonS3::ACL_OWNER_READ, //image not displayed, grantee only ryan
    //'acl' => AmazonS3::ACL_OWNER_FULL_CONTROL, //image not displayed, grantee only ryan
    'storage' => AmazonS3::STORAGE_REDUCED
    )
    );

Bevor ich kopieren alles vorbei ist, habe ich eine einfache form zu tun, test-upload und Anzeige des Bildes. Wenn ich ein Bild hochladen mit ACL_PRIVATE, kann ich entweder greifen Sie die öffentliche url, und ich werde nicht zugreifen, oder ich greifen kann die öffentliche url mit einem temporären Schlüssel und können das Bild anzuzeigen.

<?php
//display the image link
$temp_link = $s3->get_object_url($bucket, $folder.$file_name_new, '1 minute');
?>
<a href='<?php echo $temp_link; ?>'><?php echo $temp_link; ?></a><br />
<img src='<?php echo $temp_link; ?>' alt='finding image' /><br />

Mit dieser Methode, wie wird mein caching funktioniert? Ich vermute, dass jedes mal, wenn ich die Seite aktualisieren oder ändern einer meiner Platten, die ich mir ziehen, dass die Bild wieder, steigt meine Anfragen bekommen.

Ich habe auch überlegt mit bucket-Richtlinien, sodass nur Bild-retrieval, von bestimmten referrers. Verstehe ich richtig, dass Amazon soll lediglich die fetch-Anfragen von Webseiten oder domains, die ich angeben?

Ich verwiesen:
https://forums.aws.amazon.com/thread.jspa?messageID=188183&#188183 zu stellen, aber dann bin verwirrt, als die Sicherheit, die ich brauche auf meine Objekte. Es schien, wie wenn ich Sie Privat würden Sie noch nicht angezeigt, es sei denn, ich benutzt das temp-link, wie zuvor erwähnt. Wenn ich Sie der öffentlichkeit, ich konnte navigieren direkt zu Ihnen, unabhängig von referrer.

Bin ich Weg, was ich versuche, hier zu tun? Ist das nicht wirklich unterstützt vom S3, oder bin ich etwas fehlt einfach? Ich bin in der SDK-Dokumentation und viele suchen, und so fühlen sollte, ein wenig mehr klar dokumentiert, so dass hoffentlich keine Eingabe-hier können anderen helfen in dieser situation. Ich habe gelesen, andere, die den Namen der Datei mit einer eindeutigen ID, erstellen von security through obscurity, aber das wird nicht schneiden Sie es in meiner situation, und wahrscheinlich nicht das beste für jeden, der versucht, sicher zu sein.

InformationsquelleAutor der Frage Bob | 2011-03-02

Schreibe einen Kommentar