2012-06-12 4 views
6

नोट: मैं .. इस एक के लिए कुछ टैग सुझाव की सराहना करेंगे,उपयोगकर्ता एक प्रोग्रामिंग भाषा के एक sandboxed संस्करण की अनुमति दे

मैं पर प्रोग्राम के रूप में जोड़ तोड़ डेटा की एक विधि के साथ अपने उपयोगकर्ताओं को प्रदान करना चाहते हैं सर्वर। यह बाद में दिनांक में निष्पादित करने के लिए एक इन-ब्राउज़र कोड संपादक का उपयोग करके किया जाएगा, https://www.onx.ms नियोजित तरीके से भिन्न नहीं है।

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

मेरी स्पष्ट चिंता सुरक्षा है। मैं उपयोगकर्ता उत्पन्न कोड को सर्वर-साइड चलाने की अनुमति देने के खतरों को समझता हूं, लेकिन जोखिम को खत्म करने के लिए मैं क्या कदम उठा सकता हूं?

http://railsforzombies.com जैसी साइटें वास्तव में irb का उपयोग करती हैं, या यह उससे कहीं अधिक सरल है?

उत्तर

1

क्या आप जावा (या अन्य जेवीबी भाषाओं जैसे जेआरबी, स्कैला, क्लोजर इत्यादि) पर विचार करेंगे? यदि ऐसा है - एक सैंडबॉक्स किए गए ऐप के विशेषाधिकारों को प्रतिबंधित करने के लिए JVM में शक्ति का भरपूर धन है। विवरण के लिए यह अन्य प्रश्न देखें: How do I create a Java sandbox?

1

Google Caja आपको अपनी वेबसाइट में उपयोगकर्ता द्वारा निर्दिष्ट जावास्क्रिप्ट को सुरक्षित रूप से एम्बेड करने देता है, लेकिन मुझे लगता है कि इसका उद्देश्य आपके सर्वर के बजाय उपयोगकर्ता के ब्राउज़र में कोड चलाने का लक्ष्य हो सकता है। मैंने इसे स्वयं नहीं इस्तेमाल किया है।

मुझे नहीं पता कि अन्य भाषाओं के लिए तैयार किए गए समाधान हैं या नहीं, लेकिन मुझे लगता है कि एक कस्टम समाधान में सभी एपीआई पुस्तकालयों को हटाने के बाद दुभाषिया को पुनः संयोजित करना शामिल होगा जो उपयोगकर्ता को डिस्क पर लिखने, नेटवर्क कनेक्शन खोलने, कांटा प्रक्रियाओं/धागे, और किसी अन्य खतरनाक या इनकार सेवा के संचालन करते हैं। Whitelisting "सुरक्षित" पुस्तकालय एकमात्र दृष्टिकोण है जो उसके लिए काम कर सकता है।

यदि आपके पास व्यक्तिगत उपयोगकर्ताओं के लिए अलग वर्चुअल सर्वर थे तो यह सुरक्षित होगा।

+0

काजा सेवा हमलों से इनकार करने के खिलाफ सैंडबॉक्स नहीं करता है। इसमें एक शाश्वत 'जबकि (सत्य) {}' लूप या बहुत सारी मेमोरी आवंटित करने वाले उपयोगकर्ता के खिलाफ कोई बचाव नहीं है। एक सैंडबॉक्स किए गए आइफ्रेम में जावास्क्रिप्ट में समान सुरक्षा गारंटी (और डॉस सुरक्षा की कमी) का उपयोग करने के लिए आसान होने और अधिक मानक होने के दौरान काजा के रूप में होता है। – AgentME

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