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