2011-04-13 16 views
19

मैं अपनी सभी साइट की छवियों और वीडियो होस्ट करने के लिए अमेज़ॅन क्लाउडफ़्रंट का उपयोग करता हूं, ताकि वे मेरे उपयोगकर्ताओं के लिए तेज़ी से सेवा कर सकें जो दुनिया भर में काफी बिखरे हुए हैं। मैं क्लाउडफ्रंट पर होस्ट किए गए तत्वों के लिए बहुत आक्रामक आगे कैशिंग भी लागू करता हूं, Cache-Controlpublic, max-age=7776000 पर सेट करता हूं।अमेज़ॅन क्लाउडफ़्रंट हॉटलिंकिंग को रोकना

मैंने हाल ही में अपनी परेशानियों की खोज की है कि तृतीय पक्ष साइटें मेरे क्लाउडफ़्रंट सर्वर पर हॉटलिंक कर रही हैं ताकि वे बिना किसी प्राधिकरण के अपने पृष्ठों पर छवियां प्रदर्शित कर सकें।

मैंने अपने सर्वर पर हॉटलिंकिंग को रोकने के लिए .htaccess कॉन्फ़िगर किया है, लेकिन क्लाउडफ़्रंट पर ऐसा करने का कोई तरीका नहीं मिला है, जो मूल रूप से सुविधा का समर्थन नहीं करता है। और, कष्टप्रद, अमेज़ॅन की बाल्टी नीतियां, जिनका उपयोग हॉटलिंकिंग को रोकने के लिए किया जा सकता है, केवल S3 पर प्रभाव पड़ता है, उनके क्लाउडफ्रंट वितरण [link] पर कोई प्रभाव नहीं पड़ता है। यदि आप नीतियों का लाभ लेना चाहते हैं तो आपको सीधे अपनी सामग्री को एस 3 से सेवा देना होगा।

हॉटलिंकर्स के लिए मेरे सर्वर लॉग को स्कोअर करना और फ़ाइल नामों को मैन्युअल रूप से बदलना वास्तव में एक यथार्थवादी विकल्प नहीं है, हालांकि मैं सबसे अधिक ब्लैंटेंट अपराधों को समाप्त करने के लिए ऐसा कर रहा हूं।

किसी भी सुझाव का स्वागत किया जाएगा।

उत्तर

2

जहाँ तक मुझे पता है, वहाँ वर्तमान में कोई समाधान नहीं है, लेकिन मैं कुछ संभवतः प्रासंगिक, संभवतः अप्रासंगिक सुझाव हैं ...

पहले: कई लोगों को CloudFront समर्थन मंचों पर इस लिए कहा है। उदाहरण के लिए here और here देखें।

हॉटलिंकिंग से स्पष्ट रूप से एडब्ल्यूएस लाभ: अधिक हिट, जितना अधिक वे हमें चार्ज करते हैं! मुझे लगता है कि हम (क्लाउडफ़्रंट उपयोगकर्ताओं) को किसी विशेष प्रकार के भारी ऑर्केस्ट्रेटेड अभियान को शुरू करने की आवश्यकता है ताकि वे एक फीचर के रूप में रेफरर जांच की पेशकश कर सकें।

एक और अस्थायी समाधान जो मैंने सोचा है वह क्लाउडफ़्रंट/एस 3 पर यातायात भेजने के लिए उपयोग किए जाने वाले सीएनएन को बदल रहा है।

cdn.blahblahblah.com (जो कुछ CloudFront/S3 बाल्टी पर रीडायरेक्ट)

आप cdn2.blahblahblah.com करने के लिए इसे बदल सकते हैं और के लिए DNS प्रविष्टि हटा सकते हैं: तो मान लीजिए कि आप वर्तमान में करने के लिए अपने सभी छवियों को भेजने की अनुमति दे cdn.blahblahblah.com

एक DNS परिवर्तन के रूप में, जो वर्तमान में अपने सर्वर के पास कहीं भी यातायात प्राप्त करने से पहले हॉटलिंक करने वाले सभी लोगों को दस्तक देगा: DNS प्रविष्टि बस देखने में असफल हो जाएगी। इसे प्रभावी बनाने के लिए आपको सीडीएन सीएनएन को बदलना होगा (महीने में एक बार कहें?), लेकिन यह काम करेगा।

यह वास्तव में ऐसा लगता है की तुलना में यह एक बड़ी समस्या है क्योंकि इसका मतलब है कि लोग आपकी वेबसाइट के पृष्ठों (छवियों सहित) की पूरी प्रतियां आसानी से स्क्रैप कर सकते हैं - इसलिए यह केवल उन छवियों को नहीं खोता है जिन्हें आप खो देते हैं और न केवल आप भुगतान कर रहे हैं उन छवियों की सेवा करें। खोज इंजन कभी-कभी निष्कर्ष निकालते हैं कि आपके पृष्ठ प्रतियां हैं और प्रतियां मूल हैं ... और बैंग आपके यातायात को चलाता है।

मैं रणनीतिक रूप से स्थित, सुपर-फास्ट समर्पित सर्वर (एक ही स्थान से पूरी दुनिया में सभी सामग्री की सेवा करने) के पक्ष में क्लाउडफ़्रंट को त्यागने की सोच रहा हूं ताकि मुझे ऐसी चीजों पर अधिक नियंत्रण मिल सके।

वैसे भी, मुझे आशा है कि किसी और के पास बेहतर जवाब होगा!

+0

उन टिप्पणियों के लिए बहुत बहुत धन्यवाद। लगता है कि अभी इस के लिए कोई उचित समाधान नहीं है। मैन्युअल रूप से यूआरएल बदलना व्यवहार्य है लेकिन काफी श्रम-केंद्रित है! मुझे आशा है कि अमेज़ॅन एक बेहतर तरीके से आएगा। –

+0

यदि आप CNAME बदलते हैं, तो आपको URL को बदलने की आवश्यकता नहीं है। और आप पुराने CNAME से रेफरल्स को पकड़ने के लिए 301 रीडायरेक्ट का उपयोग कर सकते हैं, एक समय के लिए, एक नए सीएनएन में बदलने से पहले (खोज इंजन कहां जाने के लिए)। अगर कोई इसे पढ़ रहा है और सोच रहा है कि सीडीएन सीएनएन द्वारा मेरा क्या मतलब है, तो पॉल स्टैमैटौ की मार्गदर्शिका "हाउ टू: अमेज़ॅन क्लाउडफ़्रंट के साथ शुरू करना" में बहुत अच्छी तरह से समझाया गया है [http://paulstamatiou.com/how-to-getting-started-with -माज़ोन-क्लाउडफ़्रंट], जो क्लाउडफ़्रंट सीडीएन को लागू करने के लिए सबसे सरल, स्पष्ट मार्गदर्शिका है। –

+0

मुझे DNS सुझाव पसंद है, समय-समय पर सभी हॉटलिंक्स को खटखटाएं :) –

8

हमारे पास कई हॉटलिंकिंग समस्याएं थीं। अंत में हमने अपनी कई छवियों के लिए सीएसएस स्प्राइट्स बनाए। या तो नीचे/किनारों पर सफेद स्थान जोड़ना या छवियों को एक साथ जोड़ना।

हमने उन्हें सीएसएस का उपयोग करके अपने पृष्ठों पर सही तरीके से प्रदर्शित किया है, लेकिन जब भी वे सीएसएस/एचटीएमएल की प्रतिलिपि बनाते हैं तो कोई हॉटलिंक छवियों को गलत तरीके से दिखाएगा।

हमने पाया है कि वे परेशान नहीं हैं (या कैसे नहीं जानते)।

9

आधिकारिक दृष्टिकोण आपके मीडिया के लिए signed urls का उपयोग करना है। प्रत्येक मीडिया टुकड़े के लिए जिसे आप वितरित करना चाहते हैं, आप एक विशेष रूप से तैयार यूआरएल उत्पन्न कर सकते हैं जो समय और स्रोत आईपी के किसी भी बाधा में काम करता है।

स्थिर पृष्ठों के लिए एक दृष्टिकोण, उस पृष्ठ में शामिल मीडिया के लिए अस्थायी यूआरएल उत्पन्न करना है, जो पृष्ठ के कैशिंग समय के रूप में 2x अवधि के लिए मान्य हैं। मान लें कि आपके पृष्ठ का कैशिंग समय 1 दिन है। प्रत्येक 2 दिन, लिंक अमान्य हो जाएंगे, जो हॉटलिंकर्स को उनके यूआरएल अपडेट करने के लिए बाध्य करता है। यह मूर्खतापूर्ण नहीं है, क्योंकि वे नए यूआरएल स्वचालित रूप से प्राप्त करने के लिए टूल बना सकते हैं लेकिन इसे अधिकांश लोगों को रोकना चाहिए।

यदि आपका पृष्ठ गतिशील है, तो आपको अपने पृष्ठ के कैश को कचरा करने की चिंता करने की आवश्यकता नहीं है ताकि आप केवल यूआरएल उत्पन्न कर सकें जो केवल अनुरोधकर्ता के आईपी के लिए काम कर रहे हों।

+1

धन्यवाद जोनास: यह एक बदली हुई प्रक्रिया है, यद्यपि? –

+0

हस्ताक्षरित यूआरएल उत्पन्न करते समय मैं अनुरोधकर्ता आईपी तक पहुंचने के बारे में कैसे जाउंगा? – crazyCoder

8

You can forward the Referer header to your origin since June 26!

  1. जाओ CloudFront करने के लिए सेटिंग्स
  2. एक वितरण व्यवहार टैब और संपादित करने
  3. जाओ के लिए
  4. संपादित वितरण सेटिंग्स या एक व्यवहार बनाने
  5. सेट फॉरवर्ड हेडर
  6. श्वेतसूची में
  7. एक श्वेतसूची वाले शीर्षलेख के रूप में रेफरर जोड़ें
  8. निचले दाएं कोने में सेटिंग्स को सहेजें

अपने मूल पर रेफरर हेडर को भी संभालना सुनिश्चित करें।

+2

मैं केवल सफेद सूची में 'उत्पत्ति', 'एक्सेस-कंट्रोल-अनुरोध-शीर्षलेख' और 'एक्सेस-कंट्रोल-अनुरोध-विधि' जोड़ सकता हूं ... इसके अलावा लिंक किया गया दस्तावेज़ रेफरर के बारे में स्पष्ट रूप से कुछ भी नहीं कहता है ... –

+1

@ बर्नार्डवैलेंट आपको विकल्प [यहां] (http://i.imgur.com/OqR0kMT.png) देखने में सक्षम होना चाहिए। यदि नहीं तो शायद यह उस मूल्य योजना के कारण है जिस पर आप हैं। – GFoley83

3

अक्टूबर 2015 तक, आप क्लाउडफ़्रंट फ़ाइलों तक पहुंच प्रतिबंधित करने के लिए एडब्ल्यूएस डब्ल्यूएएफ का उपयोग कर सकते हैं। Here's an article from AWS जो डब्ल्यूएएफ की घोषणा करता है और बताता है कि आप इसके साथ क्या कर सकते हैं। Here's an article जिसने मुझे रेफरर के आधार पर पहुंच प्रतिबंधित करने के लिए अपना पहला एसीएल सेट करने में मदद की।

असल में, मैंने डेनी की डिफ़ॉल्ट कार्रवाई के साथ एक नया एसीएल बनाया। मैंने एक नियम जोड़ा जो मेरे डोमेन नाम (लोअरकेस) के लिए रेफरर हेडर स्ट्रिंग का अंत जांचता है। यदि वह उस नियम को पास करता है, तो यह पहुंच प्रदान करता है।

मेरी CloudFront वितरण करने के लिए अपने एसीएल बताए के बाद, मैं क्रोम में क्या अपने डेटा फ़ाइलों में से एक लोड करने के लिए कोशिश की और मैं इस त्रुटि मिली:

Chrome error message when trying to access a Cloudfront file directly after applying a WAF ACL

0

इस सवाल का उल्लेख किया चित्र और वीडियो फाइलों।
रेफरर जांच का उपयोग मल्टीमीडिया संसाधनों को हॉटलिंकिंग से बचाने के लिए नहीं किया जा सकता है क्योंकि कुछ मोबाइल ब्राउज़र एचटीएमएल 5 का उपयोग करके बजाए गए ऑडियो या वीडियो फ़ाइल के लिए अनुरोध करते समय रेफरर हेडर नहीं भेजते हैं।
मुझे यकीन है कि आईफोन पर सफारी और क्रोम और एंड्रॉइड पर सफारी के बारे में मुझे यकीन है।
बहुत बुरा! धन्यवाद, ऐप्पल और Google।

0

साइन इन कुकीज़ का उपयोग करने के बारे में कैसे? कस्टम पॉलिसी का उपयोग करके हस्ताक्षरित कुकी बनाएं जो विभिन्न प्रकार के प्रतिबंधों का भी समर्थन करता है जिन्हें आप सेट करना चाहते हैं और यह वाइल्डकार्ड भी है।

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