Generuoti pasibaigiančią „Amazon S3“ nuorodą CSS-gudrybės

Anonim

Jums nereikia viešinti „Amazon S3“ failų (jie nėra numatytieji). Bet jūs galite sugeneruoti specialius raktus, kad galėtumėte pasiekti privačius failus. Šie raktai perduodami per URL ir gali būti pasibaigę.

 $blocksize) $key = pack('H*', sha1($key)); $key = str_pad($key, $blocksize, chr(0x00)); $ipad = str_repeat(chr(0x36), $blocksize); $opad = str_repeat(chr(0x5c), $blocksize); $hmac = pack( 'H*', sha1( ($key $opad) . pack( 'H*', sha1( ($key $ipad) . $data )) )); return base64_encode($hmac); ) ) if(!function_exists('el_s3_getTemporaryLink'))( /** * Create temporary URLs to your protected Amazon S3 files. * * @param string $accessKey Your Amazon S3 access key * @param string $secretKey Your Amazon S3 secret key * @param string $bucket The bucket (bucket.s3.amazonaws.com) * @param string $path The target file path * @param int $expires In minutes * @return string Temporary Amazon S3 URL * @see http://awsdocs.s3.amazonaws.com/S3/20060301/s3-dg-20060301.pdf */ function el_s3_getTemporaryLink($accessKey, $secretKey, $bucket, $path, $expires = 5) ( // Calculate expiry time $expires = time() + intval(floatval($expires) * 60); // Fix the path; encode and sanitize $path = str_replace('%2F', '/', rawurlencode($path = ltrim($path, '/'))); // Path for signature starts with the bucket $signpath = '/'. $bucket .'/'. $path; // S3 friendly string to sign $signsz = implode("\n", $pieces = array('GET', null, null, $expires, $signpath)); // Calculate the hash $signature = el_crypto_hmacSHA1($secretKey, $signsz); // Glue the URL… $url = sprintf('http://%s.s3.amazonaws.com/%s', $bucket, $path); //… to the query string… $qs = http_build_query($pieces = array( 'AWSAccessKeyId' => $accessKey, 'Expires' => $expires, 'Signature' => $signature, )); //… and return the URL! return $url.'?'.$qs; ) ) ?>

Naudojimas