2011-07-05 43 views
5

Tôi đang phát triển trang web chỉ dành cho thành viên và cần đảm bảo URL video sẽ có sẵn trên đó để chúng không thể được chia sẻ hoặc chuyển cho người không phải thành viên.Làm cách nào để bảo mật video mp4 & flv

Tôi đã nghe nói về mặt nạ URL nhưng không biết cách thực hiện điều này. Hoặc là có một cách khác? Về cơ bản, các video sẽ được tổ chức trên máy chủ từ xa (vps) hoặc thông qua Amazon S3 và trang web sẽ gọi video và phát trực tuyến trong trình phát, trình phát JW hoặc trình phát bất kỳ mà tôi có thể tìm thấy bảo vệ video.

Có ai biết cách thực hiện việc này không? Hoặc biết về một dịch vụ sẽ làm điều này cho tôi?

Cảm ơn

TT

+0

khiêu dâm? xin lỗi, phải hỏi :-) –

+0

Nếu họ có thể truyền phát trực tuyến tới máy tính của họ thì có thể lưu luồng, theo cách này hay cách khác. Sau đó, họ có thể được phân phối dù sao họ thích. DRM có một lịch sử lớn thất bại. – Raoul

+0

Những gì ông Duke nói, nếu nó đang được chơi phía khách hàng, nó có thể được lưu phía khách hàng. Không có cách nào xung quanh nó.Tuy nhiên, bạn có thể bảo mật nó để chỉ các thành viên mới có quyền truy cập vào video ngay từ đầu, đó là câu hỏi của bạn? Hoặc có lẽ bạn có thể viết trình phát của riêng bạn để giải mã video trong bộ nhớ, do đó chỉ có thể phát trong trình phát của bạn (trừ khi màn hình ai đó đã chụp, rõ ràng hoặc đảo ngược thiết kế khóa mật của bạn). –

Trả lời

2

Tôi không biết lý do tại sao rất nhiều người đưa ra những lời khuyên sai, nhưng có bạn có thể làm điều này. Chỉ vì nó được "chơi" phía khách hàng không có nghĩa là nó sẽ được lưu phía khách hàng - bạn sẽ phải sử dụng phần mềm có thể ghi lại các dòng như nó đang được chơi. Hoặc là phần mềm chụp ảnh màn hình hoặc một cái gì đó giống như nó.

Dù sao, để thực hiện việc này, bạn cần sử dụng .htaccess để chuyển hướng các yêu cầu tệp tới tệp php sẽ tự động phục vụ vị trí tệp và làm xáo trộn URL.

Bạn sẽ cần những điều sau trong mã html của bạn

<html> 
<body> 
<script type="text/javascript" src="flowplayer-3.2.12.min.js"> 
</script> 
    <script type="text/javascript"> 
// <![CDATA[ 
    window.onload = function() { 
    $f("player", "flowplayer-3.2.16.swf", { 
     plugins: { 
     secure: { 
      url: "flowplayer.securestreaming-3.2.8.swf", 
      timestampUrl: "sectimestamp.php" 
     } 
     }, 
     clip: { 
     baseUrl: "secure", // Im using a folder called "secure" you can call it whatever you want 
     url: "trailer.flv", 
     urlResolvers: "secure", 
     scaling: "fit", 
     onStart: function (clip) { 
      document.getElementById("info").innerHTML = clip.baseUrl + "/" + clip.url; 
     } 
     } 
    }); 
    }; 
    // ]]> 
    </script> 

<div id="player"></div> 

</body> 
</html> 

sectimestamp.php chỉ có dòng này trong đó:

<?php 
echo time(); 
?> 

thì bạn cần phải ghi file .htaccess của bạn như sau và địa điểm trong thư mục "an toàn" của bạn hoặc bất kỳ nơi nào video được lưu giữ:

RewriteEngine on 


RewriteRule ^(.*)/(.*)/(.*)$ video.php?h=$1&t=$2&v=$3 

RewriteRule ^$ - [F] 
RewriteRule ^[^/]+\.(flv|mp4)$ - [F] 

bước tiếp theo là yo ur video.php tệp nằm trong cùng thư mục với .htaccess của bạn (bạn có thể đặt nó ở những nơi khác chỉ cần điều chỉnh url trong .htaccess

<?php 
$hash = $_GET['h']; 
$streamname = $_GET['v']; 
$timestamp = $_GET['t']; 
$current = time(); 
$token = 'kljaslidilhal9023402'; // I recommend a dynamic token to be generated using something like mt_rand() function 
$checkhash = md5($token . '/' . $streamname . $timestamp); 

if (($current - $timestamp) <= 2 && ($checkhash == $hash)) { 
    $fsize = filesize($streamname); 
    header('Content-Disposition: attachment; filename="' . $streamname . '"'); 
    if (strrchr($streamname, '.') == '.mp4') { 
    header('Content-Type: video/mp4'); 
    } else { 
    header('Content-Type: video/x-flv'); 
    } 
    header('Content-Length: ' . $fsize); 
    session_cache_limiter('nocache'); 
    header('Expires: Thu, 19 Nov 1981 08:52:00 GMT'); 
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); 
    header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); 
    header('Pragma: no-cache'); 
    $file = fopen($streamname, 'rb'); 
    print(fread($file, $fsize)); 
    fclose($file); 
    exit; 
} else { 
    header('Location: /secure'); 
} 

?> 

Đây là phần xác nhận nơi token được kiểm tra chống lại dòng để đảm bảo rằng nó không quá 2 giây - nếu không bạn sẽ phải làm mới trang và yêu cầu mã thông báo mới.

Bây giờ tất cả những điều này là nếu bạn cố gắng truy cập url.com/secure/trailer.flv bạn sẽ không thể nhờ .htaccess (trình quản lý tải xuống sẽ không hoạt động). Tuy nhiên, bạn sẽ có thể truyền trực tuyến vị trí đó nhờ thông tin về php tới url.com/video.html và nguồn trong tệp FLV sẽ trông giống như url.com/md5hashtimestamp/md5hashstreamname/md5hashtimestamp/trailer.flv. Vì vậy, sẽ rất khó để tách luồng từ tệp flash trực tiếp vì URL đó không thoát; bạn không thể truy cập trang web trực tiếp tại url.com/secure/trailer.flv nhờ .htaccess; và cuối cùng chỉ có tùy chọn là chụp màn hình/phần mềm ghi lại trong khi phát trực tuyến.

Vì vậy, nó không an toàn 100% nhưng nó làm mọi thứ khó khăn cho người dùng cuối - và tốt nhất là miễn phí

Các vấn đề liên quan