php

2008-11-13 1 views
6

के साथ स्ट्रीमिंग वीडियो की सुरक्षा कैसे करें पासवर्ड PHP/.htaccess का उपयोग कर पासवर्ड को क्विकटाइम स्ट्रीमिंग वीडियो की रक्षा करने का सबसे अच्छा तरीका क्या है। उन्हें आरटीएसपी का उपयोग करके स्ट्रीम किया जा रहा है, लेकिन यदि आवश्यक हो तो मैं अन्य प्रारूपों का उपयोग कर सकता हूं।php

मुझे पता है कि PHP के साथ प्रमाणीकरण कैसे करें, लेकिन मुझे यकीन नहीं है कि प्रमाणीकरण कैसे सेट अप करें ताकि स्ट्रीमिंग फाइल यूआरएल की रक्षा हो सके ताकि कोई उपयोगकर्ता यूआरएल की प्रतिलिपि न ले सके और इसे साझा न कर सके।

या क्या मैं इस पर विचार कर रहा हूं और मैं सिर्फ एक सामान्य प्रमाणीकरण योजना का उपयोग कर सकता हूं और फ़ाइलों को संरक्षित निर्देशिका में रख सकता हूं?

उत्तर

0

सबसे पहले, एक रेफरर को धोखा देना बहुत आसान है। यह जानकारी उपयोगकर्ता के ब्राउज़र में संग्रहीत होती है, इसलिए कोई उपयोगकर्ता बस आपके सर्वर में टेलनेट कर सकता है और अपना खुद का रेफरर प्रदान कर सकता है जो आपके डोमेन से मेल खाता है।

कुछ बातें आप की कोशिश कर सकते:

, पहले से अधिक सुरक्षित है, लेकिन अभी spoofable। mod_rewrite कुकीज़ की जांच करने की क्षमता प्रदान करता है। आप क्या कर सकते हैं एक कुकी सेट करें जब उपयोगकर्ता आपकी वेबसाइट पर जाता है जिसमें कुछ अस्पष्ट डेटा होता है। उसके बाद, आप कुछ इस तरह करने के लिए अपने RerwriteCond को संशोधित कर सकते हैं:

RewriteEngine On 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_COOKIE} obscurename=obscurevalue [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC] 
RewriteRule \.(asx¦ASX)$ http://www.yourdomain.com/images/leech.gif [R,L] 

एक और, बेहतर तकनीक PHP और माइम-प्रकार के साथ काम शामिल होगा। मुझे यकीन नहीं है कि यह स्ट्रीमिंग सामग्री का समर्थन किस हद तक करेगा, लेकिन मुझे लगता है कि यह काम करेगा। आप क्या कर सकते हैं क्या आपके सभी वीडियो लिंक एक .php फ़ाइल पर इंगित करते हैं (क्वेरी स्ट्रिंग निर्धारित करेगा कि कौन सा वीडियो चुना गया है)। फिर, एक उपयोगकर्ता इस लिंक पर जाएं करने का प्रयास करते हैं, तो आप कुछ इतना पसंद करते हैं:

<?php 
    // You could also check some sort of session variable 
    // that is set when the user visits another part of your 
    // site 
    if(!isLoggedIn()){ 
     header("Location: errorPage.htm"); 
     exit; 
    }else{ 
     // Get the name of the file specified 
     $file = get_file_name($_GET['fileID']); 

     // Specify the proper mime-type for the data you're sending 
     // (this may have to change, depending on your situation) 
     header("Content-type: video/vnd.rn-realvideo"); 

     // Read the file and output it to the browser 
     readfile($file); 
    } 
?> 

मैं क्या पढ़ा से, ज्यादातर सर्वर पता है जो माइम-प्रकार माइम-प्रकार स्ट्रीम करने लगें, तो ब्राउज़र आंकड़ा में सक्षम होना चाहिए स्ट्रीमिंग फ़ाइल को ठीक तरह से कैसे संभालें।

+1

दूसरा समाधान काम करेगा और सुरक्षित होगा। हालांकि बड़ी फ़ाइलों (वीडियो) trough php पास करने के लिए यह एक बहुत अच्छा विचार नहीं है। – Jacco

1

अमेज़ॅन एस 3 सेवा का उपयोग करने का प्रयास करें, इसे क्विर्क मिल गया है लेकिन इससे पहले कि आप इससे परिचित हो जाएं, यह समझ में आता है।

उनके एपीआई में अस्थायी रूप से यूआरएल प्राप्त करने के लिए हुक हैं जो निर्दिष्ट समय के लिए सक्रिय हैं, ताकि आप आगंतुक को यूआरएल मुक्त रूप से दिखा सकें क्योंकि यह 10 मिनट या बाद में काम नहीं करेगा।

PHP (कोड की लगभग 15 पंक्तियों) के साथ करने के लिए यह लगभग मामूली बात है, उनके मंचों पर बहुत सारे उदाहरण हैं, इसलिए आपको स्क्रैच से जाने की आवश्यकता नहीं है और इसे प्राप्त करने के तरीके पर पूर्ण दस्तावेज पढ़ने की आवश्यकता नहीं है।

उत्पन्न करने और लिंक दिखाने से पहले आप किस तरह के प्रमाणीकरण करेंगे, यह आपके ऊपर है।

आप यह भी देख सकते हैं कि यह आपके डोमेन से मानक s3 यूआरएल के बजाय video.yourdomain.com जैसी सेवा करता है।

आखिरी बात यह है कि यह सस्ता है - मैंने 8 जीबी अपलोड करते समय परीक्षण और तैनाती के महीने के लिए लगभग 2 यूएस डॉलर का भुगतान किया और इसे 3 बार पूरी तरह से डाउनलोड किया और लगभग 100 बार डाउनलोड शुरू किया। जिस व्यक्ति के लिए मैं यह कर रहा था वह कीमत से इतना संतुष्ट है कि वह अपने सभी डाउनलोड करने योग्य मीडिया को एस 3 में ले जाना चाहता है।

अब, मैंने जो भी लिखा है उसे पढ़ना, यह वाणिज्यिक/स्पैम जैसा दिखता है लेकिन मैं सेवा से बहुत संतुष्ट हूं क्योंकि मैंने पहले ऑडियो फाइलों के लिए सब कुछ कोड किया था, और जब तक सब कुछ ठीक काम नहीं करता तब तक इसमें कुछ दिन लगे और इसमें कुछ घंटे लगे कार्यान्वित करें (ज्यादातर सेवा से परिचित हो रहे हैं)।

3

दोनों nginx और lighttpd वेब सर्वरों में X-Send-File शीर्षलेख हैं जो आप PHP से वापस आ सकते हैं।तो आप PHP में अपने चेक कर सकते हैं और फिर सशर्त रूप से फ़ाइल को सर्वर से बाहर कर सकते हैं।

if (check_user_can_access()){ 
    header('X-sendfile: /path/to/file'); 
} else { 
    header('HTTP/1.1 403 Fail!'); 
} 

Lighttpd भी एक स्वच्छ मॉड्यूल आप प्रोग्राम के एक यूआरएल है कि कुछ ही समय अवधि के लिए मान्य होगा उत्पन्न करने के लिए अनुमति देता है कि mod_secure_download कहा जाता है।

Nginx, और संभवतः lighttpd, आपको डाउनलोड की गति को कैप करने की अनुमति देता है, इसलिए आप उपभोग किए जाने वाले डेटा स्ट्रीमिंग डेटा को तेज़ी से नहीं भेज रहे हैं।

किसी भी तरह से, आप फ़ाइलों को सेवा देने के लिए अपने वेब सर्वर का उपयोग करना चाहते हैं। PHP के माध्यम से उन्हें सेवा करना संभव है, लेकिन धीमा है।

+1

यहां सबसे अच्छी सिफारिश। मैं भी दूसरा हूं कि आप अपने httpd के लिए एक मॉड्यूल नियोजित करते हैं। अपने ऐप में एक पूर्ण उड़ा हुआ अमूर्त कोडिंग करने से कहीं अधिक आसान है। – Till

+0

जब मैं एक तलाश ऑपरेशन करता हूं तो मुझे समस्याएं आ रही हैं। इस विधि का उपयोग करके मैं एक खोज को कैसे कार्यान्वित कर सकता हूं इस पर कोई सुराग? – sj7

1

आप पर एक नज़र लेने के लिए चाहते हो सकता है: mod_xsendfile (for apache)

यह करने में सक्षम बनाता आंतरिक रूप से एक फाइल ले जाते हैं।

तो तुम checkCredentials.php

<?php 
if (isAuthorised($_POST['user'], $_POST['pass'])) { 
    header("X-Sendfile: $somefile"); 
    header("Content-Type: application/octet-stream"); 
    header("Content-Disposition: attachment; file=\"$somefile\""); 
    exit(0); 
} else { 
    show403('bad credentials'); 
} 
?> 

इस मॉड्यूल के लिए अपने डाउनलोड लिंक इंगित कर सकता भी अन्य वेबसर्वर के लिए उपलब्ध है। अगर मुझे सही याद है, तो विचार मूल रूप से lighttpd से आता है, लेकिन - जोश राज्यों के रूप में- nginx के लिए भी उपलब्ध है।

1

जैको के समाधान में हेडर का निरीक्षण करना संभव है, और फ़ाइल के लिए यूआरएल ढूंढना और प्रमाणीकरण के बिना इसे डाउनलोड करना संभव है?

एक संभावित समाधान जो मैं सोच सकता हूं कि फ़ाइलों को किसी जगह पर रखना संभव है, लेकिन ब्राउजर, यानी .htaccess का उपयोग करके इनकार कर दें। क्या इससे काम हो जायेगा?

+1

नहीं, यह नहीं है। X-Sendfile शीर्षलेख हटा दिया गया है, फ़ाइल अनुरोधित स्थान पर स्थित प्रतीत होती है। इसके अलावा, x-sendfile उन फ़ाइलों को पढ़ सकता है जो आम तौर पर वेब-एक्सेसिबल नहीं होते हैं – Jacco

संबंधित मुद्दे

 संबंधित मुद्दे