वर्तमान में मैं अविश्वसनीय जावा कोड चलाने के लिए सैंडबॉक्स लिखने की कोशिश कर रहा हूं। विचार फ़ाइल सिस्टम या नेटवर्क सॉकेट तक पहुंचने से जावा एप्लिकेशन को अलग करना है। इस समय मेरे पास समाधान सुरक्षा प्रबंधक है, जो आईओ या नेटवर्क तक पहुंच को रोकता है।जावा सैंडबॉक्स। I/O पहुंच को रीडायरेक्ट करने के लिए सुरक्षा प्रबंधक का उपयोग
अब मैं न करे नहीं करना चाहता, लेकिन फाइल सिस्टम, यानी करने के लिए कॉल पुनर्निर्देशित करने के लिए करता है, तो आवेदन "/home/user/application.txt" लिखने के लिए फ़ाइल का पथ की तरह कुछ के साथ प्रतिस्थापित किया जाना चाहिए चाहता है "/temp/trusted_folder/application.txt"। तो मूल रूप से मैं एप्लिकेशन को केवल कुछ विशेष फ़ोल्डर में फ़ाइल सिस्टम तक पहुंचने और इस फ़ोल्डर में अन्य सभी कॉल रीडायरेक्ट करने की अनुमति देना चाहता हूं।
तो यहां कक्षा फ़ाइलऑटपुटस्ट्रीम से विधि है, जहां एसएम से पूछा जाता है कि क्या दिए गए पथ को लिखने की अनुमति है या नहीं।
public FileOutputStream(File file, boolean append)
throws FileNotFoundException
{
String name = (file != null ? file.getPath() : null);
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkWrite(name);
}
if (name == null) {
throw new NullPointerException();
}
fd = new FileDescriptor();
fd.incrementAndGetUseCount();
this.append = append;
if (append) {
openAppend(name);
} else {
open(name);
}
}
जाहिर है, एसएम FileOutputStream के लिए एक पहुँच नहीं है और विधि (जैसे नाम या फ़ाइल) में आंतरिक चर बदल सकते हैं नहीं या किसी भी तरह निष्पादन के क्रम को प्रभावित, SecurityException फेंकने को छोड़कर। मैं समझता हूं कि आंतरिक क्षेत्रों तक पहुंच ऑब्जेक्ट उन्मुख सिद्धांतों का उल्लंघन है, मैं समझता हूं कि स्थानीय चर केवल दृश्य के अंदर दिखाई देता है और जहां उन्हें घोषित किया गया था।
तो मेरा सवाल यह है: क्या सुरक्षा प्रबंधक को सिस्टम सिस्टम में कॉल को प्रतिस्थापित करने की अनुमति देने के कोई तरीके हैं? यदि नहीं, तो क्या ऐसा करने के लिए मैं कोई अन्य दृष्टिकोण उपयोग कर सकता हूं?
मुझे उम्मीद है कि मैं काफी स्पष्ट था।
धन्यवाद। पहला विकल्प मैं स्वीकार नहीं कर सका, के बाद से मैं एक ओएस के लिए अपने स्वयं सीमित नहीं करना चाहते हैं, लेकिन दूसरा विकल्प काफी अच्छा लग रहा है। मैंने कुछ एपीआई प्रतिस्थापन की खोज की और पता चला कि जेमॉकिट टूल कक्षाओं का मज़ाक उड़ा सकता है और स्टब्स कर सकता है। तो मूल रूप से मैं इसे देख लूंगा और मुझे लगता है, कि अब मुझे यही चाहिए। – Sevich