वेब एक्सीलरेटर का उपयोग करके सामग्री संरक्षण

यह लेख साकुरा इंटरनेट एडवेंट कैलेंडर 2020 के 13वें दिन का लेख है।

वन-टाइम URL का उपयोग करके सामग्री संरक्षण

यदि आप विशिष्ट लोगों को सामग्री वितरित करना चाहते हैं, तो संभवतः आप सामग्री को डाउनलोड करने के लिए पासवर्ड प्रमाणीकरण का उपयोग करेंगे।

हालांकि, जब इसे CDN के साथ उपयोग किया जाता है, तो BASIC प्रमाणीकरण काम नहीं कर सकता है, या URL बदलने पर कैश को अलग तरीके से माना जा सकता है जिससे CDN का उपयोग नहीं किया जा सकता है।

वेब एक्सीलरेटर में एक ऐसी सुविधा है जिसे वन-टाइम URL कहा जाता है, इसलिए हम इस पर आधारित सामग्री संरक्षण का परिचय देंगे।

वन-टाइम URL क्या है?

वन-टाइम URL एक ऐसा URL जारी करने की सुविधा है जिसका समय सीमा निर्धारित होता है।

  • आप एक ऐसा URL बना सकते हैं जो कुछ समय तक उपलब्ध हो।
  • समय सीमा पार करने पर 403 Forbidden हो जाता है।

इसका उपयोग कैसे करें?

निम्नलिखित मैनुअल में इसे प्रकाशित किया गया है, लेकिन मैं इसे वास्तविक सेटिंग के दौरान समझाते हुए बताऊंगा।

चरण 1: गोपनीय सामग्री के उत्तर में सीक्रेट जोड़ें

आप केवल मान्य वन-टाइम URL के माध्यम से एक्सेस किए जाने वाले सामग्री के उत्तर में
सीक्रेट (गुप्त कुंजी) लौटाने के लिए सेटिंग करेंगे।

इसके लिए हमने साकुरा का रेंटल सर्वर उपयोग किया है, क्योंकि वेब सर्वर बनाने में झंझट होता है,
लेकिन यदि आप Apache का उपयोग कर रहे हैं, तो इसे उसी तरह किया जा सकता है।

हमारी डायरेक्टरी संरचना इस प्रकार है:

www
├── index.html
└── secret
    ├── .htaccess ← यहाँ लिखें
    ├── himitsu.jpeg
    └── himitsu.mp4

क्योंकि हमें secret डायरेक्टरी में सामग्री को निजी रखना है, इसलिए हम
.secret में सीक्रेट हेडर को वापस करने के लिए लिखेंगे।

यदि आप चाहते हैं कि secret डायरेक्टरी में सामग्री 1 घंटे (3600 सेकंड) के लिए कैश हो,
तो आप Cache-Control सेटिंग करेंगे।

Header set X-WebAccel-Secret "Himi2NoSecret!"
Header set Cache-Control "s-maxage=3600"

सीक्रेट का उत्तर होने वाला स्ट्रिंग ऐसा होना चाहिए जिसे कोई अनुमान न लगा सके।

www के अंतर्गत index.html में X-WebAccel-Secret हेडर नहीं होगा, इसलिए आप सामान्य तरीके से
एक्सेस कर सकते हैं।

यदि आप सोच रहे हैं कि यह सीक्रेट कुंजी है, और यदि इसे एक्सेस किया गया, तो यह पता चल जाएगा! रेंटल सर्वर पर
सीधे एक्सेस करने पर सामग्री देखी जा सकती है! तो आप सही हैं,
लेकिन इसे बाद में समझाएंगे।

चरण 2: वेब एक्सीलरेटर में सेट करें

वेब एक्सीलरेटर में साइट बनाएं और पंजीकरण करें।

चूंकि हम केवल वन-टाइम URL का परीक्षण कर रहे हैं, इसलिए हम उसे सबडोमेन में पंजीकरण कर रहे हैं।

पंजीकृत साइट को सक्रिय करें और सुनिश्चित करें कि यह निम्नलिखित स्थिति में हो।

चरण 3: वेब एक्सीलरेटर के माध्यम से एक्सेस करने का प्रयास करें

अब हम असल डोमेन नाम पर एक्सेस करने का प्रयास करें
https://xxxxxxx.user.webaccel.jp/

संभवत: www/index.html पर मौजूद सामग्री प्रदर्शित हुई।
यहां X-WebAccel-Secret को जोड़ने के कारण सामान्य तौर पर प्रदर्शित होता है।

चरण 4: /secret/himitsu.jpg पर एक्सेस करने का प्रयास करें

http://xxxxxxx.user.webaccel.jp/secret/himitsu.jpeg पर एक्सेस करने पर

403 Forbidden का सामना करना पड़ता है।

X-WebAccel-Secret में सेट किए गए सीक्रेट का उपयोग करके URL बनाने का प्रयास करें।
यहां URL बनाने के लिए PHP स्क्रिप्ट है।

<?php
$base_url="http://xxxxxxx.user.webaccel.jp";
$file_path="/secret/himitsu.jpeg";
$secret = "Himi2NoSecret!";
$limit_time = sprintf("%08x", time()+600);  // 10 मिनट (600 सेकंड) के लिए मान्य

echo generateURL($base_url, $file_path, $secret, $limit_time) . "\n";

function generateURL($base_url, $file_path, $secret, $limit_time) {
    $md5 = md5("/" . $file_path . "/" . $secret . "/" . $limit_time ."/" );
    $url = $base_url . $file_path . "?webaccel_secure_time=" . $limit_time . "&webaccel_secure_hash=" . $md5;
    return $url;
}

इस तरह का URL उत्पन्न होना चाहिए, इसलिए इसे उपयोग करके एक्सेस करने का प्रयास करें।

http://xxxxxxx.user.webaccel.jp/secret/himitsu.jpeg?webaccel_secure_time=5fbdf873&webaccel_secure_hash=a82e1a55b2ec4da163a542e2354269f7

सामग्री सफलतापूर्वक प्रदर्शित हो गई।

10 मिनट की वैधता के साथ URL उत्पन्न किया गया, इसलिए 10 मिनट बाद देखिए …

सफलतापूर्वक Forbidden हो गया और अब एक्सेस नहीं किया जा सका।

इस तरह से अस्थायी रूप से मान्य URL (वन-टाइम URL) का उपयोग करके, समान सामग्री को
वेब एक्सीलरेटर में कैश किया जा सकता है जबकि विशिष्ट उपयोगकर्ताओं को वितरित किया जा सकता है।

लेकिन, अगर रेंटल सर्वर पर सीधे एक्सेस किया जाए तो …

बेशक … एक्सेस संभव है।
हमें सुनिश्चित करना होगा कि वेब एक्सीलरेटर से कनेक्शन के अलावा सभी को अस्वीकार कर दिया जाए।
वेब एक्सीलरेटर के कनेक्शन के स्रोत IP पते को अनुमति देने का एक तरीका भी है,
लेकिन ओरिजिन गार्ड नामक एक सुविधा है, इसलिए इसका उपयोग करना अच्छा रहेगा।

चरण 5: ओरिजिन गार्ड सेट करें

वेब एक्सीलरेटर की साइट सेटिंग में ओरिजिन गार्ड टोकन का उपयोग करें।

टोकन जारी करने पर निम्नलिखित प्रकार का यादृच्छिक टोकन जारी किया जाएगा।

यह टोकन ओरिजिन पर अनुरोध में जोड़ा जाएगा, इसलिए
जब तक कि यह टोकन मौजूद नहीं है, तब तक एक्सेस को अनुमति दी जाएगी।

.htaccess को निम्नलिखित तरह से बदलें:

RewriteEngine On
RewriteCond %{HTTP:X-WebAccel-Guard} !^T0VAn64Kt8QD8crDEFPGqg$
RewriteRule ^(.*)$ - [F,L]
Header set X-WebAccel-Secret "Himi2NoSecret!"
Header set Cache-Control "s-maxage=3600"

अब सीधे एक्सेस नहीं किया जा सका।

निष्कर्ष

वेब एक्सीलरेटर के वन-टाइम URL सुविधा और ओरिजिन गार्ड सुविधा को मिलाकर,
अस्थायी रूप से एक्सेस करने योग्य URL बनाया जा सकता है।

इसका उपयोग भुगतान सामग्री के वितरण में या विशिष्ट लोगों को सामग्री भेजने में करें।

अंत में

जनवरी के अंत में Let’s Encrypt के प्रमाणपत्र का उपयोग करके SSL स्वचालित जारी करने और अद्यतन करने की सुविधा
वेब एक्सीलरेटर में जारी होने की संभावना है, इसलिए इसके लिए तैयार रहें!