हम एक जावा अनुप्रयोग है और अविश्वसनीय कोड जावास्क्रिप्ट दुभाषिया में बनाया का उपयोग कर चलाने के लिए चाहते हैं (javax.script। *)कैसे को लॉक करने के लिए (या सैंडबॉक्स) JDK के अंतर्निहित जावास्क्रिप्ट दुभाषिया चलाने के लिए अविश्वसनीय लिपियों
हालांकि डिफ़ॉल्ट रूप से दुभाषिया किसी भी जावा वर्ग तक पहुंच की अनुमति देता है। उदाहरण के लिए स्क्रिप्ट में "java.lang.System.exit(0)
" जेवीएम बंद कर देगा। मेरा मानना है कि इसे "लाइव कनेक्ट" कहा जाता है, अधिक जानकारी के लिए सूर्य की "जावा स्क्रिप्टिंग प्रोग्रामर गाइड" देखें।
मैं किसी भी तरह बंद, जावा वर्गों का उपयोग करने की स्क्रिप्ट के लिए क्षमता बारी चाहते हैं अर्थात मैं केवल स्क्रिप्ट वस्तुओं है कि मैं विशेष रूप से ScriptEngine
पर eval()
या put()
तरीकों का उपयोग कर में इंजेक्षन उपयोग करने में सक्षम होना चाहता हूँ।
मैं, कैसे दुभाषिया (राइनो) के पुराने स्टैंडअलोन संस्करण के साथ इस लक्ष्य को हासिल करने पर कुछ प्रलेखन पाया है उदाहरण के लिए देखें http://codeutopia.net/blog/2009/01/02/sandboxing-rhino-in-java/
हालांकि इस दृष्टिकोण नहीं संभव JDK 1.6 में सूरज आंतरिक कक्षाओं का उपयोग किए बिना, के रूप में क्लासशटर आदि आंतरिक रूप से सभी सेटअप है और सार्वजनिक तरीकों से ओवरराइड नहीं किया जा सकता है।
मुझे आशा है कि इसके आसपास एक आसान तरीका है जिसके लिए एक कस्टम सुरक्षा प्रबंधक, क्लासलोडर इत्यादि का उपयोग करके जटिल हुप्स के माध्यम से कूदने की आवश्यकता नहीं है लेकिन कुछ भी नहीं मिला है।
आप विभिन्न अनुप्रयोगों में जावास्क्रिप्ट के आस-पास सुरक्षा बुलेटिन की आवृत्ति के साथ अपेक्षा करेंगे, लाइव कनेक्ट को अक्षम करने के लिए एक साधारण ध्वज होगा!
भी देखें: http://stackoverflow.com/questions/1347099/how-do-i-secure-scripts -रुन-यूजिंग-जैवैक्स-स्क्रिप्टिंग – McDowell
मैं अभी भी 2014 में विश्वास नहीं कर सकता हूं जावा के स्क्रिप्टइंजिन के लिए लाइव कनेक्ट को अक्षम करने का कोई आसान तरीका नहीं है। मैंने किसी भी भाग्य के बिना पहुंच प्रतिबंधित करने के लिए एक आसान तरीका खोजने के लिए खोज और खोज की है।मैं एक सर्वर साइड एप्लिकेशन को तैनात कर रहा हूं जो जेएसआर 223 का उपयोग कर जावास्क्रिप्ट प्रदान किए गए जावास्क्रिप्ट को पार्स करने में सक्षम होना चाहिए और "java.awt.Desktop.getDesktop()' "या" java.lang.System.exit "जैसी चीजों को अक्षम करने में सक्षम होना चाहिए। (0) '" यह लागू करने के लिए असंभव के बगल में है। – chrixm