2011-11-22 12 views
9

हम एचटीएमएल 5 गेम के लिए ऑनलाइन एराकेड तैयार कर रहे हैं। उपयोगकर्ता एक ज़िप फ़ाइल अपलोड कर सकते हैं जिसमें उनका गेम शामिल है।उपयोगकर्ताओं को एचटीएमएल/जेएस फाइलों को अपलोड करने की अनुमति देने में जोखिम

अपलोड पर, ज़िप सर्वर द्वारा अनपैक किया जाता है और प्रत्येक फ़ाइल यह एक सफेद सूची की इजाजत दी खिलाफ विस्तार है जाँच फंस जाता है:

  • .html
  • .js
  • .png हैं। जेपीजी
  • .appcache
  • .m4a
  • .ogg

(खेलों को हमारे गेम संपादक में बनाया जाना चाहिए जो उन फ़ाइलों को निर्यात करता है)। इससे लोगों को ज़िप, सर्वर साइड स्क्रिप्ट फाइल इत्यादि अपलोड करने से रोका जाना चाहिए।

गेम तब हमारे स्थिर कुकीज डोमेन (scirra.net) पर स्थानांतरित हो जाते हैं। जब हमारे scirra.com पेज पर गेम खेला जाता है तो गेम scirra.net डोमेन को इंगित करने वाले आईफ्रेम में प्रदर्शित होता है। यह दुर्भावनापूर्ण जेएस को scirra.com कुकीज़ तक पहुंचने से रोकना चाहिए।

क्या यह iframe तकनीक और श्वेतसूची व्यापक रूप से कुछ भी करने से रोकने के लिए पर्याप्त व्यापक है? ध्यान दें कि हम वास्तव में प्रत्येक जेएस फ़ाइल को स्क्रीन नहीं कर सकते हैं, इसलिए हमें यह मानना ​​चाहिए कि लोग दुर्भावनापूर्ण जेएस अपलोड करने का प्रयास कर रहे हैं।

+5

मुझे पता है कि इससे कुछ फ्लेक्स हो सकता है, लेकिन आपको एक सेब जैसी स्वीकृति प्रक्रिया की आवश्यकता है। –

+0

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

+0

@ डैनियल, यह हमारे लिए वास्तव में यथार्थवादी नहीं है। हमारे पास ऐसे लोगों का एक बड़ा दर्शक है जो इसका उपयोग करना चाहते हैं और प्रत्येक गेम को सैंडबॉक्स करने का तरीका चाहते हैं ताकि यह सुरक्षित हो। मैं वास्तव में सोच रहा हूं कि एक जेएस एक अलग डोमेन पर फ्रेम में चलाए जाने पर कोई नुकसान हो सकता है। –

उत्तर

4

origin inheritance rules for iframes scirra.net iframe scirra.com के साथ हस्तक्षेप से रोक देगा।

हालांकि, सभी हमलों को रोकता नहीं है। असल में आप एक संग्रहित एक्सएसएस भेद्यता पेश कर रहे हैं। एक्सएसएस का उपयोग ब्राउज़र आधारित हमलों को पेश करने के लिए किया जा सकता है, जैसे ActiveX घटकों में बफर ओवरफ्लो का शोषण करना। फ्लैश, एडोब रीडर या माइक्रोसॉफ्ट ऑफिस में एक्सप्लॉयटिंग फाल्व।

आपको scirra.net सामग्री पर एंटी-वायरस चलाने पर विचार करना चाहिए। हालांकि यह सभी हमलों को नहीं रोकेगा। Iframed पृष्ठ दुर्भावनापूर्ण सामग्री वाले किसी अन्य आईफ्रेम को रीडायरेक्ट या पेश कर सकता है।

जैसा कि चेक्सॉफ्ट ने बताया। ऐप्स XSS के साथ एक-दूसरे को प्रभावित करने में सक्षम होंगे। एक दुर्भावनापूर्ण ऐप किसी अन्य एप्लिकेशन offline storage तक पहुंच प्राप्त कर सकता है या किसी अन्य ऐप में एम्बेडेड अन्य डेटा प्राप्त कर सकता है। उप-डोमेन पर प्रत्येक ऐप को मजबूर करने के लिए मजबूर करना इस समस्या को कम करेगा। आप अपने सर्वर पर * .scirra.net को इंगित करने के लिए एक DNS रिकॉर्ड सेट अप कर सकते हैं और अपने वेब ऐप के भीतर डोमेन नाम का ख्याल रख सकते हैं।

+1

और यदि आप एक ही डोमेन पर सभी सबमिट किए गए ऐप्स होस्ट करते हैं, तो हो सकता है कि आपने अपने डोमेन के विरुद्ध xss को संग्रहीत (और प्रतिबिंबित) बंद कर दिया हो, लेकिन एक दुर्भावनापूर्ण ऐप अन्य सभी ऐप्स के विरुद्ध एक्सएसएस हमले कर सकता है। प्रत्येक को अपने गतिशील रूप से जेनरेट किए गए डोमेन नाम से सेवा दें और डेवलपर्स को हमेशा मेरी कुकीज़ को myapp.scirra.net पर सेट करने के लिए प्रयास करें और कभी भी scirra.net सेट न करें। – Cheekysoft

+0

@ चेकेसॉफ्ट हाँ यह एक अच्छा बिंदु है। मैं उस वेक्टर के बारे में सोच नहीं रहा था, अन्य ऐप्स में या ऑफ़लाइन जेएस स्टोरेज सिस्टम में संग्रहीत मूल्यवान जानकारी हो सकती है। – rook

1

आपके द्वारा प्रदान किए जाने वाले गेम एडिटर में कुछ स्क्रीनिंग सुविधाओं को शामिल करने के बारे में क्या? बाहरी यूआरएल के संदर्भों को स्क्रीन करें, कोड सत्यापन करें, एन्कोडिंग की जांच करें, आदि

आपको छेड़छाड़ को रोकने के लिए ज़िप फ़ाइल को लॉक करना होगा, लेकिन यह वैसे भी एक अच्छा विचार हो सकता है।

http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-sandbox

नोट यह केवल वर्तमान में क्रोम और ओपेरा पर काम करता है:

0

किसी और यह पढ़ लिए, वहाँ एक प्रयोगात्मक/बीटा iFrame सैंडबॉक्स विशेषता है। यह आपको कुछ प्रतिबंधित सुविधाओं को निर्दिष्ट करने की अनुमति देता है।

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

कोई भी प्लगइन्स हम मैन्युअल रूप से समीक्षा और स्वीकृति के लिए स्वीकृति दे सकते हैं जो हर गेम को मैन्युअल रूप से अनुमोदित करने से बहुत छोटी नौकरी है।

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

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