internet explorer - इंटरनेट एक्सप्लोरर में कुकी को अवरुद्ध/IFRAME में सहेजा नहीं गया




internet-explorer cookies (15)

मेरे पास दो वेबसाइटें हैं, anotherexample.net कि वे example.com और anotherexample.netanotherexample.net/page.html , मेरे पास एक IFRAME SRC="http://example.com/someform.asp" । IFRAME उपयोगकर्ता को भरने और http://example.com/process.asp सबमिट करने के लिए एक फॉर्म प्रदर्शित करता है। जब मैं अपनी ब्राउज़र विंडो में फॉर्म (" someform.asp ") someform.asp , तो सभी अच्छी तरह से काम करते हैं। हालांकि, जब मैं IE 6 या IE 7 में IFRAME के ​​रूप में someform.asp लोड करता someform.asp , example.com के लिए कुकीज़ सहेजी नहीं जाती हैं। फ़ायरफ़ॉक्स में यह समस्या प्रकट नहीं होती है।

परीक्षण उद्देश्यों के लिए, मैंने http://newmoon.wz.cz/test/page.php पर एक समान सेटअप बनाया है।

example.com कुकी-आधारित सत्रों का उपयोग करता है (और इसके बारे में मैं कुछ भी नहीं कर सकता), इसलिए कुकीज़ के बिना, process.asp निष्पादित नहीं होगा। मैं उन कुकीज़ को सहेजने के लिए आईई को कैसे मजबूर करूं?

HTTP ट्रैफ़िक को स्नीफ करने के परिणाम: GET /someform.asp प्रतिक्रिया पर, एक वैध प्रति-सत्र सेट-कुकी शीर्षलेख (जैसे Set-Cookie: ASPKSJIUIUGF=JKHJUHVGFYTTYFY ) है, लेकिन POST /process.asp अनुरोध पर, कोई कुकी हेडर नहीं है बिलकुल।

एडिट 3: कुछ AJAX + सर्वरसाइड स्क्रिप्टिंग समस्या को दूर करने में स्पष्ट रूप से सक्षम है, लेकिन यह एक बग की तरह दिखता है, साथ ही यह सुरक्षा छेद का एक नया सेट खोलता है। मैं नहीं चाहता कि मेरे अनुप्रयोग बग + सुरक्षा छेद के संयोजन का उपयोग करें क्योंकि यह आसान है।

संपादित करें: पी 3 पी नीति मूल कारण थी , नीचे पूर्ण स्पष्टीकरण।


For anyone trying to get the P3P Compact Policy working with static content:

It is only possible if you are able to send custom server-side response headers with the static content.

For a more detailed explanation see my answer here: Set P3P code in HTML


अगर कोई अपाचे लाइन की तलाश में है; हमने इसका इस्तेमाल किया।

शीर्षलेख सेट पी 3 पी "सीपी = \" धन्यवाद आईई 8 \ ""

यह वास्तव में कोई फर्क नहीं पड़ता कि हमने सीपी मूल्य को सेट किया है, जब तक कि पी 3 पी हेडर हो।


आप p3p.xml और policy.xml फ़ाइलों को इस प्रकार जोड़ सकते हैं:

/home/ubuntu/sites/shared/w3c/p3p.xml

<META xmlns="http://www.w3.org/2002/01/P3Pv1">
  <POLICY-REFERENCES>
    <POLICY-REF about="#policy1">
      <INCLUDE>/</INCLUDE>
      <COOKIE-INCLUDE/>
    </POLICY-REF>
  </POLICY-REFERENCES>
  <POLICIES>
    <POLICY discuri="" name="policy1">
      <ENTITY>
        <DATA-GROUP>
          <DATA ref="#business.name"></DATA> 
          <DATA ref="#business.contact-info.online.email"></DATA> 
        </DATA-GROUP>
      </ENTITY>
      <ACCESS>
        <nonident/>
      </ACCESS>
      <!-- if the site has a dispute resolution procedure that it follows, a DISPUTES-GROUP should be included here -->
      <STATEMENT>
        <PURPOSE>
          <current/>
          <admin/>
          <develop/>
        </PURPOSE>
        <RECIPIENT>
          <ours/>
        </RECIPIENT>
        <RETENTION>
          <indefinitely/>
        </RETENTION>
        <DATA-GROUP>
          <DATA ref="#dynamic.clickstream"/>
          <DATA ref="#dynamic.http"/>
        </DATA-GROUP>
      </STATEMENT>
    </POLICY>
  </POLICIES>
</META>

मुझे एक शीर्षलेख जोड़ने का सबसे आसान तरीका अपाचे के माध्यम से प्रॉक्सी है और mod_headers का उपयोग करें, जैसे:

<VirtualHost *:80>
  ServerName mydomain.com

  DocumentRoot /home/ubuntu/sites/shared/w3c/

  ProxyRequests off
  ProxyPass /w3c/ !
  ProxyPass / http://127.0.0.1:8080/
  ProxyPassReverse / http://127.0.0.1:8080/
  ProxyPreserveHost on

  Header add p3p 'P3P:policyref="/w3c/p3p.xml", CP="NID DSP ALL COR"'
</VirtualHost>

तो हम अपने आवेदन सर्वर पर /w3c/p3p.xml को छोड़कर सभी अनुरोधों को प्रॉक्सी करते हैं।

आप इसे डब्ल्यू 3 सी वैधकर्ता के साथ परीक्षण कर सकते हैं


इसी तरह की समस्या मिली, आज सुबह पी 3 पी पॉलिसी कैसे उत्पन्न करें, इसकी जांच करने के लिए यहां गया, यहां मेरी पोस्ट है कि अपनी पॉलिसी कैसे उत्पन्न करें और वेबसाइट पर उपयोग करें :) http://everydayopenslikeaflower.blogspot.com/2009/08/how-to-create-p3p-policy-and-implement.html


एक समाधान जिसे मैंने यहां नहीं देखा है, कुकीज़ के बजाय सत्र संग्रहण का उपयोग कर रहा है। बेशक यह हर किसी की आवश्यकताओं को फिट नहीं कर सकता है, लेकिन कुछ मामलों के लिए यह एक आसान फिक्स है।


करने के लिए एक संभव बात यह है कि टूल्स में अनुमत साइटों पर डोमेन जोड़ना -> इंटरनेट विकल्प -> गोपनीयता -> साइटें: somedomain.com -> अनुमति दें -> ठीक है।


मुझे पता है कि इस विषय पर मेरा योगदान देने में थोड़ा देर हो चुकी है लेकिन मैंने इतने सारे घंटे खो दिए हैं कि शायद यह जवाब किसी की मदद करेगा।

मैं अपनी साइट पर एक थर्ड पार्टी कुकी को कॉल करने की कोशिश कर रहा था और निश्चित रूप से यह इंटरनेट एक्सप्लोरर 10 पर भी कम सुरक्षा स्तर पर काम नहीं कर रहा था ... मुझसे मत पूछो क्यों। Iframe में मैं AJAX के साथ read_cookie.php (echo $ _COOKIE) को कॉल कर रहा था।

और मुझे नहीं पता कि समस्या को हल करने के लिए मैं पी 3 पी नीति को स्थापित करने में असमर्थ क्यों था ...

मेरी खोज के दौरान मैंने JSON में कुकी प्राप्त करने के बारे में कुछ देखा। मैं कोशिश भी नहीं करता क्योंकि मैंने सोचा था कि अगर कुकी एक आईफ्रेम से गुजरती नहीं है, तो यह किसी सरणी के माध्यम से आगे नहीं गुजरती है ...

अनुमान लगाओ, यह करता है! तो यदि आप अपनी कुकी को json_encode करते हैं तो अपने AJAX अनुरोध के बाद डीकोड करें, आपको यह मिल जाएगा!

शायद कुछ ऐसा है जो मुझे याद आया और अगर मैंने किया, तो मेरी सभी माफ़ी, लेकिन मैंने कभी इतना बेवकूफ नहीं देखा। सुरक्षा के लिए तीसरे पक्ष की कुकीज़ को ब्लॉक करें, क्यों नहीं, लेकिन अगर एन्कोड किया गया तो इसे पास कर दें? अब सुरक्षा कहां है?

मुझे आशा है कि यह पोस्ट किसी और की मदद करेगी, अगर मुझे कुछ याद आया और मैं गूंगा हूं, तो कृपया मुझे शिक्षित करें!


मुझे यह काम करने के लिए मिला, लेकिन समाधान थोड़ा जटिल है, इसलिए मेरे साथ भालू।

क्या हो रहा है

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

बुराई आंख http://stuff.piskvor.org/cookies_blocked_MSIE_eye.png

इस मामले में, जब कुकी अवरुद्ध होती है, सत्र पहचानकर्ता नहीं भेजा जाता है, और लक्ष्य स्क्रिप्ट 'सत्र नहीं मिला' त्रुटि फेंकता है।

(मैंने फॉर्म में सत्र पहचानकर्ता को सेट करने और इसे POST चर से लोड करने का प्रयास किया है। यह काम करता , लेकिन राजनीतिक कारणों से मैं ऐसा नहीं कर सका।)

पृष्ठ को IFRAME के ​​अंदर अधिक भरोसेमंद बनाना संभव है: यदि आंतरिक पृष्ठ आईई को स्वीकार्य गोपनीयता नीति के साथ एक पी 3 पी शीर्षलेख भेजता है, तो कुकीज़ स्वीकार की जाएगी

इसे कैसे हल करें

एक पी 3 पी नीति बनाएँ

एक अच्छा प्रारंभिक बिंदु डब्ल्यू 3 सी ट्यूटोरियल है । मैं इसके माध्यम से चला गया हूं, आईबीएम गोपनीयता नीति संपादक डाउनलोड किया है और वहां मैंने गोपनीयता नीति का प्रतिनिधित्व किया है और इसे संदर्भित करने के लिए एक नाम दिया है (यहां यह नीति 1 policy1 )।

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

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

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

संपादक एक। एमपीपी फ़ाइल में निर्यात करता है, जो उपर्युक्त नीति का एक्सएमएल प्रतिनिधित्व है। साथ ही, यह इस नीति का "कॉम्पैक्ट संस्करण" निर्यात कर सकता है।

नीति से लिंक करें

फिर एक नीति संदर्भ फ़ाइल ( http://example.com/w3c/p3p.xml ) की आवश्यकता थी (साइट का उपयोग गोपनीयता नीतियों की एक अनुक्रमणिका):

<META>
  <POLICY-REFERENCES>
    <POLICY-REF about="/w3c/example-com.p3p#policy1">
      <INCLUDE>/</INCLUDE>
      <COOKIE-INCLUDE/>
    </POLICY-REF>
  </POLICY-REFERENCES>
</META>

<INCLUDE> सभी यूआरआई दिखाता है जो इस नीति का उपयोग करेंगे (मेरे मामले में, पूरी साइट)। संपादक से निर्यात की गई नीति फ़ाइल http://example.com/w3c/example-com.p3p अपलोड की गई थी

प्रतिक्रियाओं के साथ कॉम्पैक्ट हेडर भेजें

मैंने example.com पर वेबसेवर को प्रतिक्रियाओं के साथ कॉम्पैक्ट हेडर भेजने के लिए सेट किया है, जैसे:

HTTP/1.1 200 OK 
P3P: policyref="/w3c/p3p.xml", CP="IDC DSP COR IVAi IVDi OUR TST"
// ... other headers and content

policyref पॉलिसी रेफरेंस फाइल (जो बदले में गोपनीयता नीतियों का संदर्भ देता है) के लिए एक सापेक्ष यूआरआई है, CP कॉम्पैक्ट पॉलिसी का प्रतिनिधित्व है। ध्यान दें कि उदाहरण में पी 3 पी शीर्षकों का संयोजन आपकी विशिष्ट वेबसाइट पर लागू नहीं हो सकता है; आपके पी 3 पी शीर्षकों को सचमुच अपनी गोपनीयता नीति का प्रतिनिधित्व करना चाहिए!

फायदा!

इस कॉन्फ़िगरेशन में, ऐविल आई प्रकट नहीं होता है, कुकीज़ IFRAME में भी सहेजी जाती हैं, और एप्लिकेशन काम करता है।

संपादित करें: जब तक आप मुकदमे से बचाव करना पसंद नहीं करते हैं, तब तक क्या नहीं करना चाहिए

कई लोगों ने सुझाव दिया है कि "एविल आई ने तब तक कुछ पीडीपी हेडर में बस कुछ टैग थप्पड़ मार दें"।

टैग न केवल बिट्स का एक समूह हैं, उनके पास वास्तविक दुनिया के अर्थ हैं , और उनका उपयोग आपको वास्तविक दुनिया की जिम्मेदारियां देता है!

उदाहरण के लिए, यह दिखाते हुए कि आपने कभी भी उपयोगकर्ता डेटा एकत्र नहीं किया है, ब्राउज़र को खुश कर सकता है, लेकिन यदि आप वास्तव में उपयोगकर्ता डेटा एकत्र करते हैं, तो पी 3 पी वास्तविकता के साथ संघर्ष कर रहा है। सादा और सरल, आप अपने उपयोगकर्ताओं के लिए उद्देश्य से झूठ बोल रहे हैं , और यह कुछ देशों में आपराधिक व्यवहार हो सकता है। जैसा कि, "जेल जाना, 200 डॉलर इकट्ठा मत करो"।

कुछ उदाहरण ( टैग के पूर्ण सेट के लिए p3pwriter देखें ):

  • एनओआई : "वेब साइट पहचान डेटा एकत्र नहीं करता है।" (जैसे ही कोई अनुकूलन, लॉगिन, या कोई डेटा संग्रह (***** Analytics, कोई भी?) है, आपको इसे अपने पी 3 पी में स्वीकार करना होगा )
  • एसटीपी : उल्लिखित उद्देश्य को पूरा करने के लिए सूचना बरकरार रखी जाती है। इसके लिए जल्द से जल्द सूचना को त्यागने की आवश्यकता होती है। साइट्स में एक अवधारण नीति होनी चाहिए जो विनाश समय सारणी स्थापित करे। अवधारण नीति को साइट की मानव-पठनीय गोपनीयता नीति में शामिल या लिंक किया जाना चाहिए। "(यदि आप STP भेजते हैं लेकिन प्रतिधारण नीति नहीं है, तो आप धोखाधड़ी कर सकते हैं। यह कितना अच्छा है? बिलकुल नहीं।)

मैं वकील नहीं हूं, लेकिन मैं यह देखने के लिए अदालत में जाने को तैयार नहीं हूं कि पी 3 पी हेडर वास्तव में कानूनी रूप से बाध्यकारी है या यदि आप अपने उपयोगकर्ताओं को अपने वादे का सम्मान करने के लिए तैयार किए बिना कुछ भी वादा कर सकते हैं।


मैं Azure Access Control Services के माध्यम से लॉगिन-ऑफ के संबंध में इस समस्या की जांच कर रहा था, और किसी भी चीज़ के सिर और पूंछ को जोड़ने में सक्षम नहीं था।

फिर, इस पोस्ट पर ठोकर खाई https://blogs.msdn.microsoft.com/ieinternals/2011/03/10/beware-cookie-sharing-in-cross-zone-scenarios/

संक्षेप में, आईई ज़ोन में कुकीज़ साझा नहीं करता है (उदाहरण के लिए इंटरनेट बनाम विश्वसनीय साइटें)।

इसलिए, यदि आपका IFrame लक्ष्य और HTML पृष्ठ अलग-अलग क्षेत्र के P3P में हैं, तो कुछ भी मदद नहीं करेगा।


मैं आईफ़्रेम (PHP समाधान) में साइट पर इस छोटे से शीर्षलेख को जोड़कर बुरी नजर को दूर करने में सक्षम था:

header('P3P: CP="NOI ADM DEV COM NAV OUR STP"');

अपनी साइट को फिर से लोड करने के लिए ctrl + F5 दबाएं या एक्सप्लोरर अभी भी बुरा काम दिखा सकता है, इस तथ्य के बावजूद कि यह ठीक काम कर रहा है। यह शायद मुख्य कारण है कि मुझे इसे काम करने में इतनी सारी समस्याएं क्यों आईं।

कोई पॉलिसी फाइल बिल्कुल नहीं थी।

संपादित करें: मुझे एक अच्छी ब्लॉग एंट्री मिली जो आईफ्रेम में कुकीज़ के साथ समस्या बताती है। सी # कोड में फिक्स , एएसपीएक्स पेज और अस्वीकृत कुकीज़ में भी एक त्वरित फिक्स है


मैंने पहले एक पूर्ण पी 3 पी नीति लागू की है लेकिन मैं एक नई परियोजना के लिए फिर से परेशानी से गुजरना नहीं चाहता था जिस पर मैं काम कर रहा था। मैंने यह लिंक समस्या के एक साधारण समाधान के लिए उपयोगी पाया, केवल "सीएओ पीएसए हमारे" की न्यूनतम कॉम्पैक्ट पी 3 पी नीति निर्दिष्ट करने के लिए:

http://blog.sweetxml.org/2007/10/minimal-p3p-compact-policy-suggestion.html

आलेख एक माइक्रोसॉफ्ट केबी आलेख में एक (अब टूटा हुआ) लिंक उद्धृत करता है। नीति ने मेरे लिए चाल बनाई!


यह इस मुद्दे पर एक अच्छा विषय है, हालांकि मुझे पता चला कि एक महत्वपूर्ण विवरण (जो कम से कम मेरे मामले में आवश्यक था) जिसे यहां या कहीं और पोस्ट नहीं किया गया था (अगर मैं इसे अभी याद करता हूं तो मैं क्षमा चाहता हूं) यह था कि पी 3 पी लाइन होना चाहिए तृतीय पक्ष सर्वर से भेजे गए प्रत्येक फ़ाइल के शीर्षलेख में पारित किया गया है, यहां तक ​​कि फ़ाइलें जावास्क्रिप्ट फ़ाइलों या छवियों जैसे कुकीज़ को सेट या उपयोग नहीं कर रही हैं। अन्यथा कुकीज़ अवरुद्ध हो जाएगी। मेरे यहां एक पोस्ट में इस पर अधिक जानकारी है: http://posheika.net/?p=110


यदि आपके पास उस डोमेन का मालिक है जिसे एम्बेड करने की आवश्यकता है , तो आप उस पृष्ठ को कॉल करने से पहले, जिसमें IFrame शामिल है, उस डोमेन पर रीडायरेक्ट करें, जो कुकी बनायेगा और वापस रीडायरेक्ट करेगा, जैसा कि यहां बताया गया है: http://www.mendoweb.be/blog/internet-explorer-safari-third-party-cookie-problem/

यह इंटरनेट एक्सप्लोरर के लिए काम करेगा लेकिन सफारी के लिए भी (क्योंकि सफारी तीसरे पक्ष की कुकीज़ को भी अवरुद्ध करता है)।


A better solution would be to make an Ajax call inside the iframe to the page that would get/set cookies...






p3p