जहां तक मुझे पता है कि इसे सुरक्षा के कारण जावास्क्रिप्ट में eval()
JSON ऑब्जेक्ट्स के लिए खराब अभ्यास माना जाता है। यदि JSON किसी अन्य सर्वर से आता है तो मैं इस चिंता को समझ सकता हूं।क्यों eval() JSON?
लेकिन JSON मेरे अपने सर्वर द्वारा प्रदान की जाती है और का उपयोग कर बनाया गया है तो PHP के json_encode
(आइए हम मान लेते यह गाड़ी नहीं है भी नहीं), यह वैध बस eval()
का उपयोग जे एस में JSON को पढ़ने के लिए या वहाँ किसी भी सुरक्षा समस्या मैं कर रहे हैं करने के लिए है वर्तमान में नहीं सोच सकते हैं?
मैं वास्तव में एक JSON पार्सर को गतिशील रूप से लोड करने के साथ सौदा नहीं करना चाहता हूं और eval()
का उपयोग करने में खुशी होगी।
पीएस: यदि यह उपलब्ध है तो मैं स्पष्ट रूप से मूल JSON
ऑब्जेक्ट का उपयोग करूँगा, लेकिन आईई/ओपेरा के लिए eval()
पर वापस आना चाहता हूं।
जावास्क्रिप्ट का 'eval' * किसी भी * जावास्क्रिप्ट कोड का मूल्यांकन करेगा और न केवल छोटे सबसेट जो JSON के बराबर है। – Gumbo
बेशक यह आपके डेटा को एन्कोड करना अच्छा है, लेकिन आप हमेशा के लिए एक ही कोडबेस बनाए रखने के लिए नहीं जा रहे हैं (उम्मीद है कि), अंततः किसी और को इसे बनाए रखने की आवश्यकता होगी, और यदि कोई बग फिक्स का एक नया हिस्सा है तो कोई फिक्स करता है यह और यह एन्कोडिंग विधि को कॉल नहीं करता है, या यह इसे कॉल करता है लेकिन गलत स्थान पर - और यह एक सुरक्षा भेद्यता खोलता है - दूसरी सुरक्षा नेट होने पर फॉलबैक के रूप में शर्मनाक पीआर घोषणा के बीच अंतर हो सकता है), महंगी मुकदमे और कानूनी परिणाम, मध्यम-स्तरीय सुरक्षा नेट को ठीक करने के लिए एक साधारण कोड पैच बनाम। – BrainSlugs83
विचार करने की दूसरी बात भी रखरखाव है - अच्छी तरह से ज्ञात मानकों का पालन करना समय के आने पर कोड के स्वामित्व को किसी अन्य डेवलपर/टीम आदि में स्थानांतरित करना आसान बनाता है - जो कि अपने स्वयं के अधिकार में बहुत शक्तिशाली है, लेकिन सुरक्षा के संदर्भ में इसे रखने के लिए: डेवलपर्स जो जानते हैं कि उनका कोड क्या कर रहा है और यह कैसे काम करता है (क्योंकि यह आपके विशेष आला के लिए मानकीकृत सर्वोत्तम प्रथाओं का उपयोग करता है) उन चीज़ों को डालने की संभावना कम होने जा रहा है जो चीजों को डरते हैं और दुर्घटना, आदि द्वारा नई सुरक्षा त्रुटियों को जोड़ता है – BrainSlugs83