window.top==window
की तुलना करके इसके लिए एकमात्र असली चेक क्लाइंट-साइड पर किया जा सकता है यदि यह सही है तो iframe
के बाहर एप्लिकेशन चलाया जाता है।
कोई सर्वर साइड चेक नहीं है जो यह सुनिश्चित कर सकता है क्योंकि ब्राउज़र HTTP_REFERRER के अलावा अन्य सर्वर पर पैरेंट फ्रेम के बारे में जानकारी नहीं दे रहा है जिसे विश्वसनीय नहीं किया जा सकता है।
फेसबुक अपने आवेदन करने के लिए signed_request गुजर अगर पृष्ठ टैब कैनवास की कैनवास पर चल रहा है, लेकिन यह कुछ आप पूरी तरह से भरोसा कर सकते हैं, क्योंकि यह भी उपयोगकर्ता द्वारा मजाक उड़ाया जा सकता है नहीं है।
अद्यतन:
बयान है कि यह केवल वास्तविक जांच मतलब यह नहीं है कि आप इसे का उपयोग करना चाहिए है! आप बेहतर signed_request
आधारित समाधान से चिपके रहते हैं, क्योंकि फेसबुक आपके ऐप्स के साथ इंटरैक्ट करने का एक तरीका है, उपयोगकर्ताओं को साइन_रेक्वेस्ट का उपयोग करने का इरादा नहीं है और यह किसी भी परिस्थिति में नहीं होना चाहिए क्वेरी स्ट्रिंग के भाग के रूप में पास किया जाना चाहिए! यदि उपयोगकर्ता इसे नकल कर रहा है, तो शायद कुछ गलत है, मैं उस मामले में गलत स्टाइल प्रदान करने से परेशान नहीं हूं।
स्रोत
2011-10-19 23:58:14
मुझे लगता है कि "जावास्क्रिप्ट कोड का थोड़ा सा" आप विंडो.top == विंडो का संदर्भ लेते हैं? –
हां, 'if (window.location == top.location) window.location = 'thispage.php? Clearfb = 1'; 'प्रत्येक पृष्ठ के शीर्ष पर' के साथ कुछ, लेकिन * केवल * यदि सर्वर है वर्तमान में iframe प्रारूप में outputting। और निश्चित रूप से clearfb पैरामीटर का पता लगाने के लिए उचित सर्वर-साइड कोड और उचित प्रतिक्रिया दें। –
@ फ्लॉइड विल्बर्न, बीटीडब्लू 'टॉप.लोकेशन' तक पहुंच रहा है अगर 'विंडो! = Window.top' क्रॉस डोमेन पॉलिसी के कारण डोमेन भिन्न होने पर सुरक्षा चेतावनी बढ़ाएगा। –