मिले-जुले कॉन्टेंट की समस्या ठीक करना

अपनी वेबसाइट के लिए एचटीटीपीएस की सुविधा उपलब्ध कराना, साइट और उपयोगकर्ताओं को हमलों से बचाने की दिशा में एक अहम कदम है. हालांकि, मिले-जुले कॉन्टेंट की वजह से, यह सुरक्षा बेकार हो सकती है. ब्राउज़र, असुरक्षित मिले-जुले कॉन्टेंट को ब्लॉक करते हैं. इसके बारे में, मिले-जुले कॉन्टेंट क्या होता है? लेख में बताया गया है.

इस गाइड में, हम मौजूदा मिले-जुले कॉन्टेंट की समस्याओं को ठीक करने और नई समस्याएं होने से रोकने के लिए, तकनीकों और टूल के बारे में बताएंगे.

अपनी साइट पर जाकर, मिले-जुले कॉन्टेंट का पता लगाना

Google Chrome में एचटीटीपीएस पेज पर जाने पर, ब्राउज़र आपको मिले-जुले कॉन्टेंट के बारे में अलर्ट करता है. यह अलर्ट, JavaScript कंसोल में गड़बड़ियों और चेतावनियों के तौर पर दिखता है.

मिले-जुले कॉन्टेंट क्या होता है? लेख में, आपको कई उदाहरण मिल सकते हैं. साथ ही, यह भी पता चल सकता है कि Chrome DevTools में समस्याओं की रिपोर्ट कैसे की जाती है.

पैसिव मिले-जुले कॉन्टेंट के उदाहरण में, ये चेतावनियां दिखेंगी. अगर ब्राउज़र को https यूआरएल पर कॉन्टेंट मिलता है, तो वह उसे अपने-आप अपग्रेड कर देता है. इसके बाद, एक मैसेज दिखाता है.

Chrome DevTools में, मिक्स किए गए कॉन्टेंट का पता चलने और उसे अपग्रेड किए जाने पर दिखने वाली चेतावनियां दिखाई गई हैं

ऐक्टिव मिले-जुले कॉन्टेंट को ब्लॉक कर दिया जाता है और एक चेतावनी दिखती है.

Chrome DevTools में, ऐक्टिव मिक्स्ड कॉन्टेंट को ब्लॉक किए जाने पर दिखने वाली चेतावनियां दिखाई गई हैं

अगर आपको अपनी साइट पर http:// यूआरएल के लिए इस तरह की चेतावनियां दिखती हैं, तो आपको अपनी साइट के सोर्स में इन्हें ठीक करना होगा. इन यूआरएल की सूची बनाना मददगार होता है. साथ ही, उस पेज का नाम भी शामिल करें जिस पर आपको ये यूआरएल मिले थे. इससे, इन्हें ठीक करते समय मदद मिलती है.

अपनी साइट पर मिले-जुले कॉन्टेंट का पता लगाना

सोर्स कोड में सीधे तौर पर, मिले-जुले कॉन्टेंट को खोजा जा सकता है. अपने सोर्स में http:// खोजें और ऐसे टैग देखें जिनमें एचटीटीपी यूआरएल एट्रिब्यूट शामिल हों. ध्यान दें कि ऐंकर टैग (<a>) के href एट्रिब्यूट में http:// होना, अक्सर मिले-जुले कॉन्टेंट की समस्या नहीं होती. हालांकि, इसके कुछ अहम अपवाद हैं, जिनके बारे में बाद में बताया गया है.

अगर आपकी साइट, कॉन्टेंट मैनेजमेंट सिस्टम का इस्तेमाल करके पब्लिश की जाती है, तो ऐसा हो सकता है कि पेज पब्लिश करते समय, असुरक्षित यूआरएल के लिंक शामिल किए जाएं. उदाहरण के लिए, इमेज को रेलेटिव पाथ के बजाय, पूरे यूआरएल के साथ शामिल किया जा सकता है. आपको सीएमएस कॉन्टेंट में इन्हें ढूंढकर ठीक करना होगा.

मिले-जुले कॉन्टेंट को ठीक करना

अपनी साइट के सोर्स में मिले-जुले कॉन्टेंट का पता लगाने के बाद, उसे ठीक करने के लिए यह तरीका अपनाएं.

अगर आपको कंसोल में कोई ऐसा मैसेज मिलता है जिसमें बताया गया हो कि किसी संसाधन के अनुरोध को एचटीटीपी से एचटीटीपीएस में अपने-आप अपग्रेड कर दिया गया है, तो कोड में उस संसाधन के http:// यूआरएल को https:// में बदला जा सकता है. यह देखने के लिए कि कोई संसाधन सुरक्षित तरीके से उपलब्ध है या नहीं, ब्राउज़र के यूआरएल बार में http:// को https:// में बदलें. इसके बाद, ब्राउज़र टैब में उस यूआरएल को खोलने की कोशिश करें.

अगर संसाधन https:// के ज़रिए उपलब्ध नहीं है, तो इनमें से कोई एक विकल्प आज़माएं:

  • अगर कोई दूसरा होस्ट उपलब्ध है, तो उससे संसाधन शामिल करें.
  • अगर कानूनी तौर पर अनुमति है, तो कॉन्टेंट डाउनलोड करें और उसे सीधे अपनी साइट पर होस्ट करें.
  • अपनी साइट से संसाधन को पूरी तरह से हटाएं.

समस्या ठीक करने के बाद, उस पेज को देखें जहां आपको मूल रूप से गड़बड़ी मिली थी. साथ ही, पुष्टि करें कि अब वह गड़बड़ी नहीं दिख रही है.

टैग के स्टैंडर्ड के मुताबिक इस्तेमाल न करने से बचें

अपनी साइट पर टैग के स्टैंडर्ड के मुताबिक इस्तेमाल न करने से बचें. उदाहरण के लिए, ऐंकर (<a>) टैग के यूआरएल से, मिले-जुले कॉन्टेंट की गड़बड़ियां नहीं होतीं, ऐसा इसलिए, क्योंकि इनसे ब्राउज़र किसी नए पेज पर जाता है. इसका मतलब है कि आम तौर पर, इन्हें ठीक करने की ज़रूरत नहीं होती. हालांकि, कुछ इमेज गैलरी स्क्रिप्ट, <a> टैग की सुविधा को बदल देती हैं. साथ ही, पेज पर मौजूद लाइटबॉक्स डिसप्ले में, href एट्रिब्यूट से तय किए गए एचटीटीपी संसाधन को लोड करती हैं, इससे, मिले-जुले कॉन्टेंट की समस्या होती है.

बड़े पैमाने पर मिले-जुले कॉन्टेंट को मैनेज करना

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

कॉन्टेंट की सुरक्षा के लिए नीति

कॉन्टेंट की सुरक्षा के लिए नीति (सीएसपी) ब्राउज़र की एक ऐसी सुविधा है जिसका इस्तेमाल कई कामों के लिए किया जा सकता है. इसकी मदद से, बड़े पैमाने पर मिले-जुले कॉन्टेंट को मैनेज किया जा सकता है. सीएसपी की रिपोर्टिंग के तरीके का इस्तेमाल करके, अपनी साइट पर मिले-जुले कॉन्टेंट को ट्रैक किया जा सकता है. साथ ही, मिले-जुले कॉन्टेंट को अपग्रेड या ब्लॉक करके, उपयोगकर्ताओं को सुरक्षित रखने के लिए, लागू करने की नीतियां उपलब्ध कराई जा सकती हैं.

किसी पेज के लिए इन सुविधाओं को चालू करने के लिए, अपने सर्वर से भेजे गए रिस्पॉन्स में Content-Security-Policy या Content-Security-Policy-Report-Only हेडर शामिल करें. इसके अलावा, अपने पेज के <head> सेक्शन में <meta> टैग का इस्तेमाल करके, Content-Security-Policy सेट किया जा सकता है. हालांकि, not Content-Security-Policy-Report-Only सेट **नहीं** किया जा सकता.

कॉन्टेंट की सुरक्षा के लिए नीति की मदद से, मिले-जुले कॉन्टेंट का पता लगाना

कॉन्टेंट की सुरक्षा के लिए नीति का इस्तेमाल करके, अपनी साइट पर मिले-जुले कॉन्टेंट की रिपोर्ट इकट्ठा की जा सकती हैं. इस सुविधा को चालू करने के लिए, Content-Security-Policy-Report-Only डायरेक्टिव सेट करें. इसके लिए, इसे अपनी साइट के लिए रिस्पॉन्स हेडर के तौर पर जोड़ें.

रिस्पॉन्स हेडर:

Content-Security-Policy-Report-Only: default-src https: 'unsafe-inline' 'unsafe-eval'; report-uri https://example.com/reportingEndpoint

जब भी कोई उपयोगकर्ता आपकी साइट के किसी पेज पर जाता है, तो उसका ब्राउज़र, कॉन्टेंट की सुरक्षा के लिए बनी नीति का उल्लंघन करने वाली किसी भी चीज़ के बारे में, JSON फ़ॉर्मैट में रिपोर्ट भेजता है. ये रिपोर्ट, https://example.com/reportingEndpoint पर भेजी जाती हैं. इस मामले में, जब भी कोई सब-रिसॉर्स एचटीटीपी पर लोड होता है, तो एक रिपोर्ट भेजी जाती है. इन रिपोर्ट में, उस पेज का यूआरएल शामिल होता है जहां नीति का उल्लंघन हुआ था. साथ ही, उस सब-रिसॉर्स का यूआरएल भी शामिल होता है जिसने नीति का उल्लंघन किया था. अगर आपने रिपोर्टिंग एंडपॉइंट को इन रिपोर्ट को लॉग करने के लिए कॉन्फ़िगर किया है, तो हर पेज पर खुद जाकर, अपनी साइट पर मिले-जुले कॉन्टेंट को ट्रैक किया जा सकता है.

इसके लिए, दो चेतावनियां हैं:

  • उपयोगकर्ताओं को आपके पेज पर ऐसे ब्राउज़र में जाना होगा जो सीएसपी हेडर को समझता हो. ज़्यादातर आधुनिक ब्राउज़र के लिए यह सही है.
  • आपको सिर्फ़ उन पेजों की रिपोर्ट मिलती हैं जिन पर आपके उपयोगकर्ता जाते हैं. इसलिए, अगर आपके पास ऐसे पेज हैं जिन पर ज़्यादा ट्रैफ़िक नहीं आता है, तो हो सकता है कि आपको अपनी पूरी साइट की रिपोर्ट मिलने में कुछ समय लगे.

कॉन्टेंट की सुरक्षा के लिए नीति से जुड़ी गाइड में ज़्यादा जानकारी और एंडपॉइंट का एक उदाहरण दिया गया है.

सीएसपी की मदद से रिपोर्ट करने के विकल्प

अगर आपकी साइट, Blogger जैसे किसी प्लैटफ़ॉर्म पर होस्ट की गई है, तो हो सकता है कि आपके पास हेडर में बदलाव करने और सीएसपी जोड़ने का ऐक्सेस न हो. इसके बजाय, वेबसाइट क्रॉलर का इस्तेमाल करना एक बेहतर विकल्प हो सकता है. इससे, आपकी साइट पर मौजूद समस्याओं का पता लगाया जा सकता है. जैसे, HTTPSChecker या Mixed Content Scan.

असुरक्षित अनुरोधों को अपग्रेड करना

Browser Support

  • Chrome: 44.
  • Edge: 17.
  • Firefox: 48.
  • Safari: 10.1.

Source

ब्राउज़र, असुरक्षित अनुरोधों को अपग्रेड और ब्लॉक करने लगे हैं. इन एसेट को अपने-आप अपग्रेड या ब्लॉक करने के लिए, सीएसपी डायरेक्टिव का इस्तेमाल किया जा सकता है.

upgrade-insecure-requests सीएसपी डायरेक्टिव, ब्राउज़र को नेटवर्क अनुरोध करने से पहले, असुरक्षित यूआरएल को अपग्रेड करने का निर्देश देता है.

उदाहरण के लिए, अगर किसी पेज में एचटीटीपी यूआरएल वाला कोई इमेज टैग है, जैसे कि <img src="https://example.com/image.jpg">

तो ब्राउज़र, https://example.com/image.jpg के लिए सुरक्षित अनुरोध करता है. इस तरह, उपयोगकर्ता को मिले-जुले कॉन्टेंट से बचाया जा सकता है.

इस सुविधा को चालू करने के लिए, इस डायरेक्टिव के साथ Content-Security-Policy हेडर भेजें:

Content-Security-Policy: upgrade-insecure-requests

या दस्तावेज़ के <head> सेक्शन में, <meta> एलिमेंट का इस्तेमाल करके, उसी डायरेक्टिव को इनलाइन एम्बेड करें:

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

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

upgrade-insecure-requests डायरेक्टिव, <iframe> दस्तावेज़ों में भी लागू होता है. इससे, पूरा पेज सुरक्षित रहता है.