2017-09-18 166 views
-3

我想保護我的url .mp4 amazon s3能夠將其插入到我的網站播放器中。我想弄清楚一兩件事:使用php加密url亞馬遜s3

https://[mysite]/encrypt/encriptar.php?v=M3BtRGtUNkRoSndYRU5PdWI0Tmd2SjUrUmZRWWxybFVGU2pCTHBkT3B0U1Fkd3JsN2RaQXFQYURYdjVUL1g2bk1KQTkvcUZKbUY3UTRvOVNSNzNtbks3NUl6TzlZVFdHbXFKT1ZQUVNvOU9ndS9CTnowYmVqVWk4dXA4dzk0L0xVOStlb1Y5UTFsaU1RTmVKUUFUd2VRPT0= 

,我發現這個劇本,但它似乎不工作,它不播放視頻:

<?php 
    session_start(); 
    $sid = session_id(); 

    $path = "http://s3-us-east-1.amazonaws.com/my bucket/myfile.mp4"; 

    $hash = md5($path.$sid); 

    $_SESSION[$hash] = $path; 

    ?> 

    <html> 
<head></head> 
<body> 

    <video width="320" height="240" controls> 
     <source src="encriptar.php?video=<?= $hash ?>" type="video/mp4"> 
    </video> 

</body> 
</html> 
+0

'encriptar.php'是做什麼用的? – apokryfos

+0

做到這一點 [link] <?php session_start(); $ sid = session_id(); $ path =「http://s3-us-east-1.amazonaws.com/my bucket/myfile.mp4」; $ hash = md5($ path。$ sid); $ _SESSION [$ hash] = $ path; ?> [/ link] – evil1990

+0

Md5不是加密 –

回答

1

當用戶訪問網頁,他們將嘗試再次訪問該頁面播放視頻。這是一個循環。

爲此在encriptar.php

<?php 
session_start(); 
$sid = session_id(); 

$path = "http://s3-us-east-1.amazonaws.com/my bucket/myfile.mp4"; 

$hash = md5($path.$sid); //You need to use proper encryption. This is not secure at all. 

$_SESSION[$hash] = $path; 
?> 

<html> 
<head></head> 
<body> 

    <video width="320" height="240" controls> 
     <source src="decrypt.php?video=<?= $hash ?>" type="video/mp4"> 
    </video> 

</body> 
</html> 

這應該是你decrypt.php

<?php 
session_start(); 
if (isset($_GET["video"]) && isset($_SESSION[$_GET["video"]])) { 
    header("Content-Type: video/mp4"); 
    $file = $_SESSION[$_GET["video"]]; //Get the filename 
    readfile($file); //Proxy 
    die();  

} 

這樣你encryptar是創建一個散列解密腳本,將解密和代理文件。請注意,每個人仍然可以下載視頻,這是保護您免受影響的唯一方法是找出您的存儲桶名稱。

+0

我試着按照你說的我看到這個但文件不能播放出現無效的源爲什麼? – evil1990

+0

@ evil1990我已經過度工程了。檢查更新 – apokryfos

+0

確定視頻有效,但是如果我將播放器向前移動 半視頻示例視頻掛起 來轉發和退回播放器,我必須等待所有緩衝區已滿。沒有腳本的 視頻完美地工作。 你有這個解決方案 非常感謝你 – evil1990