2010-10-06 16 views
9

मैं एक स्क्रिप्ट क्रॉस डोमेन ajax कॉल करने के लिए JSONP का उपयोग करता है। यह बहुत अच्छा काम करता है लेकिन मेरा सवाल यह है कि क्या अन्य साइटों को इन यूआरएल से डेटा एक्सेस करने और डेटा प्राप्त करने से रोकने का कोई तरीका है? मैं मूल रूप से उन साइटों की एक सूची बनाना चाहता हूं जिन्हें अनुमति है और यदि वे सूची में हैं तो केवल डेटा लौटाएं। मैं PHP का उपयोग कर रहा हूं और आंकड़ा मैं "HTTP_REFERER" का उपयोग करने में सक्षम हो सकता हूं लेकिन पढ़ा है कि कुछ ब्राउज़र इस जानकारी को नहीं भेजेंगे .... ??? कोई विचार?JSONP सुरक्षित?

धन्यवाद!

+6

भी 'रेफरर' को एकल उपयोग टोकन के लिए –

उत्तर

6

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

सुरक्षा सही नहीं है। एक पर्याप्त रूप से निर्धारित व्यक्ति किसी भी सुरक्षा उपायों को दूर कर सकता है, लेकिन सुरक्षा का लक्ष्य एक उच्च प्रतिरोधी पैदा करना है कि लोगों और अधिकांश लोगों को सुरक्षा समझौता करने के लिए आवश्यक समय और संसाधनों को रखने से मना कर दिया जाएगा।

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

बस याद रखें, इस नाकाम करने के लिए असंभव नहीं है। एक अन्य वेबसाइट जावास्क्रिप्ट से बाहर टोकन निकाल सकता है, और या ajax कॉल रोकना और कई बिंदुओं पर डेटा का अपहरण।

+0

+1 को धोखा दिया जा सकता है – mattbasta

0

क्या आपके पास उन सर्वर/साइटों तक पहुंच है जिन्हें आप JSONP तक पहुंच देना चाहते हैं?

आप क्या कर सकते हैं, हालांकि आदर्श नहीं है कि जेएसओएनपी को देखने के लिए पेज लोड पर आईपी के डीबी में रिकॉर्ड जोड़ना है, फिर जेसनपी लोड पर, जांचें कि यह रिकॉर्ड मौजूद है या नहीं। यदि उचित हो तो शायद रिकॉर्ड पर समाप्ति हो।

उदा

http://mysite.com/some_page/ -, जैसा कि ऊपर, डेटाबेस के लिए

  • लोड JSONP जोड़ने जाँच आईपी डेटाबेस में मौजूद है - उपयोगकर्ता भार पेज की अनुमति उपयोगकर्ताओं

    http://anothersite.com/anotherpage के डेटाबेस के लिए उनके IP जोड़ें।

  • एक घंटे बाद db से रिकॉर्ड को हटाने, तो एक और पेज लोड उदाहरण

के लिए की आवश्यकता होगी हालांकि यह काफी आसानी से अगर स्क्रेपर (या अन्य साइटों) क्या विधि बाहर काम करने में कामयाब आसपास काम किया जा सकता है आप उपयोगकर्ताओं को JSONP देखने की अनुमति देने के लिए उपयोग कर रहे हैं, उन्हें केवल पहले पृष्ठ को हिट करना होगा।

-1

मैं तुम्हें इनको साथ ऐसा कर सकते कुछ कर रहा हूँ -

सुनिश्चित करें कि आपका हेडर भेज रहे हैं "HTTP_REFERER" - मैं किसी भी ब्राउज़र में अभ्यस्त इसे भेजने यदि आप इसे करने के लिए बता पता नहीं है।(यदि आप अभी भी चिंतित हैं, तो शानदार ढंग से वापस आएं)

फिर सही रेफरर से पहुंच को अस्वीकार/अस्वीकार करने के लिए htaccess का उपयोग करें।

# deny all except those indicated here 
order deny,allow 
deny from all 
allow from .*domain\.com.* 
0

प्रत्येक जेसनपी अनुरोध के साथ उपयोग किए जाने वाले टोकन रखने वाली कुकी का उपयोग करने के बारे में कैसे? सेटअप के आधार पर आप एक चर का उपयोग भी कर सकते हैं यदि आप कुकीज़ का उपयोग नहीं करना चाहते हैं।

0

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

लेकिन अभी भी बहुत सारे जोखिम हैं। बीच में आदमी जानता है कि कैसे।

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