javascript - Google प्रीपेंड क्यों करता है(1); उनके JSON प्रतिक्रियाओं के लिए?




ajax security (4)

चूँकि <script> टैग को समान उत्पत्ति नीति से छूट दी गई है जो वेब दुनिया में सुरक्षा की आवश्यकता है, while(1) JSON प्रतिक्रिया में जोड़े जाने पर <script> टैग में इसके दुरुपयोग को रोकता है।

https://code.i-harness.com

Google प्रीपेंड क्यों करता है while(1); उनके (निजी) JSON प्रतिक्रियाओं के लिए?

उदाहरण के लिए, Google कैलेंडर में कैलेंडर चालू और बंद करते समय यहां एक प्रतिक्रिया है:

while(1);[['u',[['smsSentFlag','false'],['hideInvitations','false'],
  ['remindOnRespondedEventsOnly','true'],
  ['hideInvitations_remindOnRespondedEventsOnly','false_true'],
  ['Calendar ID stripped for privacy','false'],['smsVerifiedFlag','true']]]]

मुझे लगता है कि यह लोगों को इस पर एक eval() करने से रोकने के लिए है, लेकिन आपको वास्तव में ऐसा करना होगा while आपको while और फिर आपको सेट करना होगा। मुझे लगता है कि लोगों को सुरक्षित JSON पार्सिंग कोड लिखना सुनिश्चित करने के लिए eval की रोकथाम है।

मैंने इसे अन्य स्थानों के एक जोड़े में भी उपयोग किया है, लेकिन Google (मेल, कैलेंडर, संपर्क, आदि) के साथ बहुत अधिक है। काफी अजीब है, Google डॉक्स इसके बजाय &&&START&&& शुरू होता है, और Google संपर्कों के साथ शुरू होता है while(1); &&&START&&& while(1); &&&START&&&

यहाँ क्या चल रहा है?


यह JSON अपहरण से बचाता है, एक प्रमुख JSON सुरक्षा मुद्दा जो 2011 से ECMAScript 5 के साथ सभी प्रमुख ब्राउज़रों में औपचारिक रूप से fixed गया है।

दिए गए उदाहरण: कहते हैं कि Google में mail.google.com/json?action=inbox जैसा URL है, जो आपके इनबॉक्स के पहले 50 संदेशों को JSON प्रारूप में लौटाता है। अन्य डोमेन पर ईविल वेबसाइट एक ही मूल नीति के कारण इस डेटा को प्राप्त करने के लिए AJAX अनुरोध नहीं कर सकती हैं, लेकिन वे URL को <script> टैग के माध्यम से शामिल कर सकते हैं। URL को आपके कुकीज़ के साथ देखा जाता है, और वैश्विक सरणी निर्माता या एक्सेसर विधियों को ओवरराइड करके, जब भी कोई ऑब्जेक्ट (सरणी या हैश) विशेषता सेट की जाती है, तो उन्हें JSON सामग्री पढ़ने की अनुमति देता है।

while(1); या &&&BLAH&&& रोकता है: mail.google.com पर एक AJAX अनुरोध में पाठ सामग्री तक पूर्ण पहुंच होगी, और इसे दूर कर सकते हैं। लेकिन एक <script> टैग प्रविष्टि आँख बंद करके जावास्क्रिप्ट को बिना किसी प्रसंस्करण के निष्पादित करता है, जिसके परिणामस्वरूप या तो एक अनंत लूप या एक सिंटैक्स त्रुटि होती है।

यह क्रॉस-साइट अनुरोध जालसाजी के मुद्दे को संबोधित नहीं करता है।


यह एक तीसरे पक्ष के लिए <script> टैग के साथ HTML दस्तावेज़ में JSON प्रतिक्रिया सम्मिलित करने के लिए कठिन बनाने के लिए होगा। याद रखें कि <script> टैग को समान मूल नीति से छूट दी गई है।


यह सुनिश्चित करने के लिए कुछ अन्य साइट आपके डेटा को चोरी करने की कोशिश करने के लिए बुरा चालें नहीं कर सकती हैं। उदाहरण के लिए, सरणी कंस्ट्रक्टर को बदलकर , फिर इस JSON URL को <script> टैग के माध्यम से, दुर्भावनापूर्ण तृतीय-पक्ष साइट JSON प्रतिक्रिया से डेटा चुरा सकती है। while(1); लगाकर while(1); शुरुआत में, स्क्रिप्ट इसके बजाय लटकाएगी।

XHR और दूसरी तरफ एक अलग JSON पार्सर का उपयोग करके एक ही-साइट अनुरोध, आसानी से while(1); अनदेखा कर सकता है while(1); उपसर्ग।





security