मैं एक सर्वर ऐप पर काम कर रहा हूं जिसे उपयोगकर्ता द्वारा आपूर्ति की गई ग्रोवी स्क्रिप्ट द्वारा बढ़ाया जा सकता है। यह स्पष्ट है कि मैं यह सुनिश्चित करना चाहता हूं कि ये स्क्रिप्ट एक बहुत तंग सैंडबॉक्स में चलें जहां वे कोर एप्लिकेशन कोड को बाधित नहीं कर सकते हैं या सर्वर को अधिभारित करने के लिए बहुत अधिक संसाधनों का उपभोग नहीं कर सकते हैं।बुलेट प्रूफ ग्रोवी स्क्रिप्ट एम्बेडिंग
मैं विभिन्न संभावनाओं का अध्ययन किया है और अंतिम समाधान इन का एक संयोजन हो सकता है:
भागो एक बहुत ही सीमित सुरक्षा प्रबंधक भीतर स्क्रिप्ट। स्क्रिप्ट को किसी भी अनुमति सुरक्षा प्रबंधक के भीतर चलाया जाता है। अतिरिक्त अनुमतियां घोषित की जानी चाहिए (एंड्रॉइड की तरह)।
लॉन्च एक नई JVM। Runtime.exec के आस-पास एक स्क्रिप्टप्रोसेस रैपर बनाएं और सुरक्षा प्रबंधक, सीमित ढेर इत्यादि के साथ एक नया JVM स्पॉइंग करें। क्योंकि हम एक पूर्ण उड़ा प्रक्रिया शुरू करते हैं, हम मॉनिटर खराब व्यवहार वाले लोगों पर अधिक नियंत्रण प्राप्त कर सकते हैं? संसाधन में लागत हालांकि सख्त होगी ... यहां एक विकल्प का उपयोग एंट का उपयोग करना होगा, लेकिन क्या यह स्केलेबल होगा?
जावा मॉनिटर एपीआई जावा 6 में निगरानी क्षमता वाला एक पैकेज है। हम धागे की निगरानी कर सकते हैं और शायद अनंत लूप और मेमोरी खपत का पता लगा सकते हैं। किसी ने इसका इस्तेमाल किया?
ये मेरे मन में आज है। यह सुनिश्चित करने का सबसे अच्छा तरीका क्या होगा कि ये स्क्रिप्ट सही तरीके से व्यवहार करें और फिर भी एक निश्चित स्केलेबिलिटी और प्रदर्शन रखें?
हाँ मुझे लगता है कि यह जाने का रास्ता है। मैं अंतर्निहित कस्टमाइज़र और ट्रांसफार्मर पर एक नज़र डालेगा। अगर किसी के पास पहले से निर्मित तंग अनंत लूप और मेमोरी खपत सीमाएं हैं जो भयानक होंगी। –