2009-01-20 8 views
6

हमें हाल ही में एक समस्या हुई है जहां अन्य साइटें हमारी ई-कॉमर्स साइट को फ़्रेमसेट के अंदर चला रही हैं जहां हमारी साइट (अपराधी संबद्ध आईडी के साथ) एक पूर्ण चौड़ाई फ्रेम में एकमात्र सामग्री है। इसलिए अनिवार्य रूप से यह हमारी साइट की तरह शीर्ष पर उनके यूआरएल के साथ दिखता है और महसूस करता है। हम उनके सहयोगी आईडी को काट सकते हैं, जो उनके लिए यह व्यर्थ बना देगा, लेकिन इससे भविष्य के अपराधियों को एक ही चीज़ करने से रोका नहीं जाता है जब तक कि हम इसके बारे में नहीं पाते।हमारी वेबसाइट को किसी अन्य डोमेन के फ्रेमसेट या आईफ्रेम के अंदर चलने से रोकने के लिए संभव है?

क्या ऐसा होने से रोकने के लिए एक सामान्य तरीका है (जावास्क्रिप्ट के माध्यम से जो हर पृष्ठ पर दिखाई देता है?)? ध्यान दें कि सभी लिंक पर लक्ष्य जोड़ना संभव नहीं है, लेकिन सभी पृष्ठों पर जेएस का एक स्निपेट जोड़ना है, क्योंकि शीर्षलेख और पाद लेख भाग एक स्रोत से साइटवाइड साझा किए जाते हैं।

एक और संभावना अपाचे स्तर पर होगी (यदि कुछ भी है जो हम सर्वर पक्ष कर सकते हैं) क्योंकि हम मॉड-रीराइट के माध्यम से सभी अनुरोधों को पार करते हैं।

ध्यान दें कि यह के रूप में हम IFrames

उत्तर

3

मेरा मानना ​​है कि इस लक्ष्य को हासिल करने के लिए उचित आधुनिक विधि The X-Frame-Options response header के साथ है।

MDN से:

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

पर एक नज़र डालें: How to prevent IFRAME from redirecting top-level window

+0

ठीक है। मैंने संपादित किया है –

+0

यह 2017 के लिए सही जवाब है। ओडब्ल्यूएएसपी में एक महान [क्लिकजैकिंग डिफेंस धोखा शीट] है (https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet) जो हमले और उपचार की संभावनाओं पर चर्चा करता है। – thirdender

+0

मैंने अपने पुराने प्रश्नों के चुने हुए उत्तर को आधुनिक सर्वोत्तम प्रथाओं को अद्यतन किया है – Peter

0

बस यहाँ अनुमान लगा के मान्य उपयोग करते हैं, पृष्ठों एक iframe के भीतर लोड करने के लिए माता पिता पेज हमारे डोमेन से निकलती है, तो अनुमति देने के देहली के लिए आवश्यक हो जाएगा ... लेकिन क्या हुआ अगर आप का उपयोग करें अपने दस्तावेज़ ऑब्जेक्ट तक पहुंचने के लिए अपनी मूल विंडो को कॉल करने के लिए जावास्क्रिप्ट? आप जांच सकते हैं कि यह शून्य नहीं है, और यदि कोई मूल विंडो है (जिसका अर्थ है कि आपकी साइट लोड हो गई है), तो आप जावास्क्रिप्ट के माध्यम से अपने सभी एचटीएमएल को छुपा सकते हैं ...

2

इस आलेख को देखें। यह फ्रेम का पता लगाने और उनमें से तोड़ने के लिए एक काफी सरल समाधान प्रदान करता है।

How to Break Out of Frames with JavaScript

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

5

मैंने इस समस्या को "फ्रेम पॉपर स्क्रिप्ट" के रूप में संदर्भित करने के समाधान के बारे में सुना है। एक त्वरित Google this thread के साथ आता है। इस तरह दिखता है सबसे आसान में से एक है:

if (window != top) top.location.href = location.href; 
+0

यह काफी गंधा होगा, हैकिंग 'Iframe' आपकी साइट के लिए कोशिश कर रहा है साइट, माता पिता के विंडो में अपनी साइट पर पुनः निर्देशित किया जाएगा :) – Jobo

+0

आप भी यह लिख सकते हैं के रूप में 'अगर (शीर्ष! == स्वयं) top.location.href = self.location.href' - एक ही बात, लेकिन अधिक सममित – Christoph

+0

इनमें से कई" फ्रेम पॉपर स्क्रिप्ट ", में कामकाज हैं इसलिए उन्हें अब नहीं होना चाहिए उपयोग किया गया। ओडब्ल्यूएएसपी देखें [क्लिकजैकिंग डिफेंस धोखा शीट: असुरक्षित गैर-वर्किंग स्क्रिप्ट्स का उपयोग न करें] (https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Insecure_Non-Working_Scripts_DO_NOT_USE) – thirdender

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

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