Eval संकलन का पूरक है जो कोड को गति देने में उपयोग किया जाता है। अस्थायी रूप से मेरा मतलब है कि आप एक सरल टेम्पलेट जनरेटर लिखते हैं जो उपयोगी टेम्पलेट कोड उत्पन्न करता है जो विकास की गति को बढ़ाता है।
मैंने एक फ्रेमवर्क लिखा है, जहाँ डेवलपर्स EVAL का उपयोग नहीं करते हैं, लेकिन वे हमारे फ्रेमवर्क का उपयोग करते हैं और बदले में टेम्प्लेट उत्पन्न करने के लिए फ्रेमवर्क को EVAL का उपयोग करना पड़ता है।
ईवीएएल का प्रदर्शन निम्नलिखित विधि का उपयोग करके बढ़ाया जा सकता है; स्क्रिप्ट निष्पादित करने के बजाय, आपको एक फ़ंक्शन वापस करना होगा।
var a = eval("3 + 5");
इसका आयोजन होना चाहिए
var f = eval("(function(a,b) { return a + b; })");
var a = f(3,5);
कैशिंग एफ निश्चित रूप से गति में सुधार करेगा।
साथ ही क्रोम ऐसे कार्यों को बहुत आसानी से डिबगिंग की अनुमति देता है।
सुरक्षा के संबंध में, eval का उपयोग करना या न करना शायद ही कोई फर्क पड़ेगा,
- सबसे पहले, ब्राउज़र एक सैंडबॉक्स में पूरी स्क्रिप्ट को आमंत्रित करता है।
- कोई भी कोड जो EVAL में बुराई है, ब्राउज़र में ही बुराई है। हमलावर या कोई भी आसानी से डोम में एक स्क्रिप्ट नोड इंजेक्षन कर सकता है और कुछ भी कर सकता है यदि वह कुछ भी निकाल सकता है। EVAL का उपयोग नहीं करने से कोई फर्क नहीं पड़ेगा।
- यह ज्यादातर खराब सर्वर-साइड सुरक्षा है जो हानिकारक है। सर्वर पर खराब कुकीज़ सत्यापन या खराब एसीएल कार्यान्वयन सबसे हमलों का कारण बनता है।
- जावा के मूल कोड में हाल ही में जावा भेद्यता आदि थी। जावास्क्रिप्ट एक सैंडबॉक्स में चलाने के लिए डिज़ाइन किया गया था, जबकि ऐपलेट को सैंडबॉक्स के बाहर प्रमाण पत्र के साथ चलाने के लिए डिज़ाइन किया गया था, आदि जो कमजोरियों और कई अन्य चीजों को जन्म देते हैं।
- ब्राउज़र की नकल के लिए कोड लिखना मुश्किल नहीं है। आपको बस इतना करना है कि अपने पसंदीदा उपयोगकर्ता एजेंट स्ट्रिंग के साथ सर्वर से HTTP अनुरोध करें। सभी परीक्षण उपकरण वैसे भी ब्राउज़रों का मज़ाक उड़ाते हैं; यदि कोई हमलावर आपको नुकसान पहुंचाना चाहता है, तो EVAL उनका अंतिम उपाय है। आपके पास सर्वर-साइड सुरक्षा से निपटने के लिए उनके पास कई अन्य तरीके हैं।
- ब्राउज़र डोम में फ़ाइलों तक पहुंच नहीं है और उपयोगकर्ता नाम नहीं है। वास्तव में मशीन पर कुछ भी नहीं है कि eval तक पहुँच दे सकता है।
यदि आपके सर्वर-साइड की सुरक्षा किसी के लिए भी कहीं से भी हमला करने के लिए पर्याप्त है, तो आपको EVAL के बारे में चिंता नहीं करनी चाहिए। जैसा कि मैंने उल्लेख किया है, अगर EVAL मौजूद नहीं होता, तो हमलावरों के पास आपके ब्राउज़र की EVAL क्षमता के बावजूद आपके सर्वर में हैक करने के लिए कई उपकरण होते हैं।
पहले से उपयोग नहीं की जाने वाली चीज़ के आधार पर जटिल स्ट्रिंग प्रसंस्करण करने के लिए कुछ टेम्पलेट्स उत्पन्न करने के लिए केवल एवल अच्छा है। उदाहरण के लिए, मैं पसंद करूंगा
"FirstName + ' ' + LastName"
विरोध के रूप में
"LastName + ' ' + FirstName"
मेरे प्रदर्शन नाम के रूप में, जो डेटाबेस से आ सकता है और जो हार्डकोड नहीं है।