निर्दिष्ट करने के लिए इवल को सीमित करना चाहता हूं, मुझे कॉन्फ़िगरेशन के लिए "डेटा के रूप में कोड" के विचार से प्यार है, क्योंकि आप कक्षाओं से प्राप्त सत्यापन को वही सत्यापन है जिसे आप कॉन्फ़िगरेशन फ़ाइल के लिए चाहते हैं। ट्विटर ने एक अच्छा इवल उपयोगिता लिखी जो इसे आसान बनाता है (https://github.com/twitter/util)। मैं उपयोगकर्ताओं को रिमोट सेवा में कॉन्फ़िगरेशन फ़ाइलों को अपलोड करने की अनुमति देना चाहता हूं। इससे मेरी रिमोट सेवा के खिलाफ कोड इंजेक्ट करने की क्षमता खुलती है।कोड इंजेक्शन को रोकने के लिए आप ट्विटर के स्कैला इवल को कैसे मजबूर कर सकते हैं? मैं कॉन्फ़िगरेशन पैरामीटर
उदाहरण के लिए, अगर मैं निम्नलिखित config मामले वर्ग है:
case class MyConfig(param1: String)
मैं चाहूँगा उपयोगकर्ता आदेश युक्त एक फ़ाइल अपलोड करने के लिए सक्षम होने के लिए:
MyConfig(param1 = "My Param Value")
... लेकिन कमांड वाली फ़ाइल नहीं:
MyConfig(param1 = {import someDangerousPackage; someDangerousCommand(); "My Param Value"})
क्या यह सुनिश्चित करने के लिए संकलन को रोकने का कोई तरीका है कार्यों को बुलाया जा रहा है?
यदि आपके पास पहले से ही केस क्लास हैं, तो आप कॉन्फ़िगरेशन फ़ाइल के लिए टाइपएफ़ कॉन्फ़िगरेशन का उपयोग क्यों नहीं करते हैं और इसे वहां से निकालते हैं? – drexin
http://code.google.com/p/scalascriptengine/ पर एक नज़र डालें, मुझे लगता है कि वे कुछ बुनियादी सुरक्षा विकल्प प्रदान करते हैं – vitalii
यदि मैं टाइपएफ़ कॉन्फ़िगर होकॉन फ़ाइल का उपयोग कर केस क्लास इंस्टेंस बना और मान्य करता हूं, तो मेरी लाइन संख्या प्रतिबिंबित होगी जनरेटेड केस क्लास, मूल होकॉन नहीं - जब तक कि मैं दृष्टिकोण को गलत समझ नहीं पा रहा हूं ... –