सामग्री मार्केटिङ

Iframe Breaking: कसरी तपाईंको सामग्रीको अनाधिकृत iframing रोक्न

मेरो साइटमा एक आगन्तुकले एक पटक मलाई सूचित गरे जब उसले मेरो लिङ्कहरू मध्ये एकमा क्लिक गर्यो twitter; उसलाई मेरो साइटमा ठूलो पपअप र एक खराब कोड चेतावनीको साथ ल्याइयो। त्यो कसैको हेक बाहिर डराउन पर्याप्त छ, त्यसैले मैले केहि परीक्षण गर्न थाले। मेरो साइटमा केहि गलत थिएन - समस्या लिङ्क थियो।

अर्को साइटको लिङ्कले एउटा उपकरणपट्टी माथि उत्पादन गर्‍यो जसले मानिसहरूलाई मेरो साइट तल iframe मा लोड गर्दा खराब लिङ्कमा क्लिक गर्न प्रोत्साहित गर्‍यो। धेरै मानिसहरूलाई, मेरो साइटले दुर्भावनापूर्ण कोड फैलाएको जस्तो देखिन सक्छ। म मेरो साइटलाई iframe भित्र लोड गर्ने कुनै पनि साइट मनपर्छ भन्न चाहन्न, त्यसैले मैले कुनै पनि उचित गीकले गर्ने काम गरें... मैले फ्रेम ब्रेकर लोड गरें।

तपाईको साइटलाई iframing सधैं दुर्भावनापूर्ण हुँदैन, यद्यपि। हामीले भर्खरै एउटा उपकरण साझा गर्नुभयो, Sniply, कल-टु-एक्शन थप्न (CTA) तपाईंले साझेदारी गर्नुभएको कुनै पनि वेबसाइट लिङ्कमा। यसले तपाईंको सम्पूर्ण साइटलाई iframe मा इम्बेड गरेर र कल-टु-एक्शनको साथ तपाईंको सामग्रीमा div लागू गरेर गर्छ।

तर म मेरो सामग्री र मैले गरेको प्रयासको बारेमा धेरै विशेष छु Martech Zone, त्यसैले म चाहन्न कि कसैले मेरो सामग्रीलाई iframe गरोस्, लिङ्क-साझेदारी प्लेटफर्मको साथ पनि। केहि अनुसन्धान गर्दा, यो ह्यान्डल गर्न को लागी केहि तरिकाहरु छन्।

कसरी जाभास्क्रिप्टको साथ तपाईंको सामग्रीलाई Iframing रोक्न

यो जाभास्क्रिप्ट कोडले हालको सञ्झ्याल (self) शीर्ष-सबैभन्दा विन्डो होइन (top)। यदि यो होइन भने, यसको मतलब पृष्ठ फ्रेम, iframe, वा समानमा छ, र स्क्रिप्टले शीर्ष विन्डोलाई रिडिरेक्ट गर्छ। URL हालको विन्डोको। यो प्रभावकारी रूपमा फुट्छ iframe को।

<script type='text/javascript'>
if (top !== self) top.location.href = self.location.href;
</script>

यस दृष्टिकोणमा धेरै नकारात्मक पक्षहरू छन्:

  1. JavaScript मा निर्भरता: यदि प्रयोगकर्ताले JavaScript असक्षम पारेको छ भने, यो विधिले काम गर्दैन।
  2. ढिलाइ: JavaScript कार्यान्वयन हुनु अघि केही ढिलाइ हुन सक्छ, जुन समयमा तपाइँको साइटको फ्रेम गरिएको संस्करण अझै देखिन सक्छ।
  3. क्रस-ओरिजिन प्रतिबन्धहरू: केहि परिस्थितिहरूमा, समान उत्पत्ति नीतिले यो लिपिलाई उद्देश्य अनुसार काम गर्नबाट रोक्न सक्छ। यदि अभिभावक कागजात फरक डोमेनमा छ भने, यो पहुँच गर्न सक्षम नहुन सक्छ top.location.href.
  4. फ्रेम-बस्टिङ-बस्टरहरूको लागि सम्भावित: त्यहाँ पनि स्क्रिप्टहरू छन् (फ्रेम-बस्टिङ-बस्टरहरू भनिन्छ) जसले फ्रेम-बस्टिङ स्क्रिप्टहरूलाई काम गर्नबाट रोक्न सक्छ।

राम्रो दृष्टिकोण HTTP प्रतिक्रिया हेडरहरू प्रयोग गर्न हो।

X-फ्रेम-विकल्पहरू र सामग्री-सुरक्षा-नीति

दुबै X-Frame-OptionsContent-Security-Policy (सीएसपी) वेबसाइटको सुरक्षा बढाउन प्रयोग गरिने HTTP प्रतिक्रिया हेडरहरू हुन्। तिनीहरू प्रत्येकले थोरै फरक उद्देश्यहरू प्रदान गर्दछ र लचिलोपनको विभिन्न स्तरहरू छन्।

X-Frame-Options एक पुरानो HTTP हेडर हो कि तपाइँको साइट a मा सम्मिलित गर्न सकिन्छ कि भनेर नियन्त्रण गर्न विशेष गरी डिजाइन गरिएको हो <frame>, <iframe>, <embed>वा <object> अर्को साइटमा। यसमा तीन सम्भावित निर्देशनहरू छन्:

  1. DENY - पृष्ठलाई फ्रेममा देखाउन सकिँदैन, साइटले त्यसो गर्ने प्रयास गरे पनि।
  2. SAMEORIGIN - पृष्ठ मात्र पृष्ठको रूपमा उही मूलमा फ्रेममा प्रदर्शन गर्न सकिन्छ।
  3. ALLOW-FROM uri - पृष्ठ निर्दिष्ट मूल मा एक फ्रेम मा मात्र प्रदर्शन गर्न सकिन्छ।

तर, X-Frame-Options सीमित छ कि यसले धेरै जटिल परिदृश्यहरू ह्यान्डल गर्न सक्दैन, जस्तै धेरै फरक उत्पत्तिहरूबाट फ्रेमिङ गर्न वा सबडोमेनहरूको लागि वाइल्डकार्डहरू प्रयोग गर्न। सबै ब्राउजरहरूले समर्थन गर्दैनन् ALLOW-FROM निर्देशन।

Content-Security-Policy, अर्कोतर्फ, धेरै लचिलो र शक्तिशाली HTTP हेडर हो। जबकि यो सबै गर्न सक्छ X-Frame-Options गर्न सक्छ र धेरै धेरै, यसको प्राथमिक उद्देश्य क्रस-साइट स्क्रिप्टिङ सहित कोड इंजेक्शन आक्रमणहरूको एक विस्तृत श्रृंखलालाई रोक्न होXSS) र क्लिकज्याकिंग। यसले सामग्रीको विश्वसनीय स्रोतहरू (लिपिहरू, शैलीहरू, छविहरू, आदि) को श्वेतसूची निर्दिष्ट गरेर काम गर्दछ।

फ्रेमहरू नियन्त्रण गर्न, CSP प्रयोग गर्दछ frame-ancestors निर्देशन। तपाईले धेरै स्रोतहरू निर्दिष्ट गर्न सक्नुहुन्छ, बहु डोमेनहरू र वाइल्डकार्ड सबडोमेनहरू सहित। यहाँ एउटा उदाहरण छ:

cssCopy codeContent-Security-Policy: frame-ancestors 'self' yourdomain.com *.domain2.com;

यसले पृष्ठलाई आफ्नै साइटमा फ्रेम गर्न अनुमति दिनेछ ('self'), मा yourdomain.com, र को कुनै पनि सबडोमेनमा domain2.com.

CSP लाई प्रतिस्थापनको रूपमा सिफारिस गरिएको छ X-Frame-Options, किनकि यसले सबै कुरा ह्यान्डल गर्न सक्छ X-Frame-Options गर्न सक्छ, र धेरै धेरै। अधिकांश आधुनिक ब्राउजरहरूले CSP लाई समर्थन गर्दा, त्यहाँ अझै पनि केही पुराना वा कम सामान्य ब्राउजरहरू हुन सक्छन् जसले यसलाई पूर्ण रूपमा समर्थन गर्दैनन्।

एचटीएमएलको साथ तपाईंको सामग्रीलाई कसरी iframing रोक्ने

त्यहाँ अब एक सामग्री-सुरक्षा-नीति मेटा ट्याग छ जुन तैनात गर्न सकिन्छ जसले तपाईंको सामग्रीलाई iframe गर्ने क्षमतालाई असक्षम पार्छ:

<meta http-equiv="Content-Security-Policy" content="frame-ancestors 'self' yourdomain.com">

HTML मेटा ट्यागको प्रभावकारिता सीमित छ किनभने सबै ब्राउजरहरूले यसलाई सम्मान गर्दैनन् Content-Security-Policy मेटा ट्याग प्रयोग गरेर सेट गर्दा।

HTTP हेडरहरूको साथ तपाईंको सामग्रीलाई कसरी iframing रोक्ने

HTTP हेडरहरू प्रयोग गर्नु राम्रो हो X-Frame-Options or Content-Security-Policy फ्रेमिङ नियन्त्रण गर्न। यी विकल्पहरू अधिक भरपर्दो, र सुरक्षित छन्, र JavaScript असक्षम भए पनि काम गर्दछ। यदि तपाइँसँग HTTP हेडरहरू सेट गर्न सर्भरमा नियन्त्रण छैन भने जाभास्क्रिप्ट विधि अन्तिम उपायको रूपमा मात्र प्रयोग गर्नुपर्छ। प्रत्येक उदाहरणको लागि, प्रतिस्थापन गर्नुहोस् yourdomain.com तपाईंको वास्तविक डोमेनको साथ।

अपाचे - आफ्नो परिमार्जन गर्नुहोस् .htaccess निम्नानुसार फाइल:

Header always set X-Frame-Options SAMEORIGIN
Header always set Content-Security-Policy "frame-ancestors 'self' yourdomain.com"

निजिनक्स - आफ्नो सर्भर ब्लक निम्नानुसार परिमार्जन गर्नुहोस्:

add_header X-Frame-Options SAMEORIGIN;
add_header Content-Security-Policy "frame-ancestors 'self' yourdomain.com";

IIS - आफ्नो मा निम्न थपेर यो गर्नुहोस् web.config फाइल:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Content-Security-Policy" value="frame-ancestors 'self' yourdomain.com" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

WordPress - तपाईंको functions.php फाइलमा यो कोड थपेर यो गर्नुहोस्:

function add_security_headers() {
  header('X-Frame-Options: SAMEORIGIN');
  header("Content-Security-Policy: frame-ancestors 'self' yourdomain.com");
}
add_action('send_headers', 'add_security_headers');

यी कन्फिगरेसनहरूले तपाइँको पृष्ठलाई तपाइँले निर्दिष्ट गरेको सटीक डोमेनमा iframes भित्र इम्बेड गर्न अनुमति दिनेछ, कुनै डोमेन सबडोमेनहरूमा होइन। यदि तपाइँ निश्चित उपडोमेनहरूलाई अनुमति दिन चाहनुहुन्छ भने, तपाइँले तिनीहरूलाई स्पष्ट रूपमा सूचीबद्ध गर्नुपर्नेछ, जस्तै subdomain1.yourdomain.com subdomain2.yourdomain.com, र त्यसमा।

धेरै डोमेनहरूबाट तपाईंको सामग्री Iframing लाई अनुमति दिनुहोस्

तपाईंले सामग्री-सुरक्षा-नीति HTTP प्रतिक्रिया हेडर र फ्रेम-एन्स्टर्स निर्देशनको साथ धेरै डोमेनहरू निर्दिष्ट गर्न सक्नुहुन्छ। स्पेसले प्रत्येक डोमेनलाई अलग गर्नुपर्छ। यहाँ एउटा उदाहरण छ:

Content-Security-Policy: frame-ancestors 'self' domain1.com domain2.com domain3.com;

अपाचे - आफ्नो परिमार्जन गर्नुहोस् .htaccess निम्नानुसार फाइल:

Header always set X-Frame-Options SAMEORIGINHeader always set Content-Security-Policy "frame-ancestors 'self' domain1.com domain2.com domain3.com"

निजिनक्स - आफ्नो सर्भर ब्लक निम्नानुसार परिमार्जन गर्नुहोस्:

add_header X-Frame-Options SAMEORIGIN;add_header Content-Security-Policy "frame-ancestors 'self' domain1.com domain2.com domain3.com";

IIS - आफ्नो मा निम्न थपेर यो गर्नुहोस् web.config फाइल:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="X-Frame-Options" value="SAMEORIGIN" />
      <add name="Content-Security-Policy" value="frame-ancestors 'self' domain1.com domain2.com domain3.com" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

वाइल्डकार्ड डोमेनबाट तपाईंको सामग्री Iframing लाई अनुमति दिनुहोस्

तपाईले सबै सबडोमेनहरूको लागि वाइल्डकार्ड पनि निर्दिष्ट गर्न सक्नुहुन्छ Content-Security-Policy HTTP प्रतिक्रिया हेडर र फ्रेम पूर्वज निर्देशन। यहाँ को उदाहरणहरू छन् Content-Security-Policy कोड अपडेट गर्न आवश्यक छ:

Content-Security-Policy: frame-ancestors 'self' *.yourdomain.com;

अपाचे - आफ्नो परिमार्जन गर्नुहोस् .htaccess निम्नानुसार फाइल:

Header always set Content-Security-Policy "frame-ancestors 'self' *.yourdomain.com"

निजिनक्स - आफ्नो सर्भर ब्लक निम्नानुसार परिमार्जन गर्नुहोस्:

add_header Content-Security-Policy "frame-ancestors 'self' *.domain1.com *.domain2.com *.domain3.com";

IIS - आफ्नो मा निम्न थपेर यो गर्नुहोस् web.config फाइल:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Content-Security-Policy" value="frame-ancestors 'self' *.yourdomain.com" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

Douglas Karr

Douglas Karr को CMO छ OpenINSightTS र को संस्थापक Martech Zone। डगलसले दर्जनौं सफल MarTech स्टार्टअपहरूलाई मद्दत गरेको छ, Martech अधिग्रहण र लगानीमा $ 5 बिलियन भन्दा बढीको लगनशीलतामा सहयोग गरेको छ, र कम्पनीहरूलाई उनीहरूको बिक्री र मार्केटिङ रणनीतिहरू कार्यान्वयन र स्वचालित गर्न मद्दत गर्न जारी छ। डगलस एक अन्तर्राष्ट्रिय मान्यता प्राप्त डिजिटल रूपान्तरण र MarTech विशेषज्ञ र वक्ता हो। डगलस डम्मीको गाईड र व्यापार नेतृत्व पुस्तकका प्रकाशित लेखक पनि हुन्।

सम्बन्धित लेख

शीर्ष बटनमा फर्कनुहोस्
बन्द

Adblock पत्ता लाग्यो

Martech Zone तपाइँलाई यो सामग्री कुनै पनि लागतमा उपलब्ध गराउन सक्षम छ किनभने हामीले हाम्रो साइटलाई विज्ञापन राजस्व, सम्बद्ध लिङ्कहरू, र प्रायोजनहरू मार्फत मुद्रीकरण गर्छौं। यदि तपाईंले हाम्रो साइट हेर्दै आफ्नो विज्ञापन अवरोधक हटाउनु भयो भने हामी प्रशंसा गर्नेछौं।