2011-11-04 6 views
19

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

मुझे पता है "eval() बुरा है" और मैं देख सकता हूं कि स्क्रिप्ट के eval() कितने अंधेरे से एक्सएसएस और अन्य सुरक्षा मुद्दों का कारण बन सकता है। मैं कुछ वैकल्पिक योजनाओं को पकाए जाने की कोशिश कर रहा हूं।

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

उत्तर

24

jsFiddle एक अलग डोमेन, http://fiddle.jshell.net (try it and see) पर उपयोगकर्ता स्क्रिप्ट निष्पादित करता है।
इसलिए, यह मूल फ्रेम के साथ बातचीत नहीं कर सकता है और यह कुकीज़ चोरी नहीं कर सकता है।

आप जावास्क्रिप्ट में अपनी क्वेरीस्ट्रिंग से पढ़ते हुए एक अलग डोमेन में स्थिर पृष्ठ डाल कर एक अलग सर्वर के बिना वास्तव में ऐसा कर सकते हैं।
आप पेज शीर्षक (और दुश्मन भी कर सकते हैं) का उपयोग कर वापस संवाद कर सकते हैं।

+0

एक अलग डोमेन पर निष्पादित करने का क्या अर्थ है - एक आईफ्रेम लोड करें जिसमें जावास्क्रिप्ट निष्पादित होता है? – buley

+0

@ एडिटर: बिल्कुल। '