2011-03-15 14 views
9

मुझे क्लाइंट साइड जावास्क्रिप्ट में बनाए गए जटिल डेटा संरचनाओं को संग्रहीत करने के लिए एक तंत्र की आवश्यकता है। मैं जावास्क्रिप्ट ऑब्जेक्ट को स्ट्रिंग में बदलने के लिए stringify विधि का उपयोग करने पर विचार कर रहा हूं, इसे डेटाबेस में संग्रहीत करें और फिर इसे वापस खींचें और मुझे जावास्क्रिप्ट ऑब्जेक्ट को वापस देने के लिए रिवर्स पार्स विधि का उपयोग करें।डेटाबेस में जेएसओएन डेटा स्टोर करना कितना खतरनाक है?

क्या यह एक बुरा विचार है या इसे सुरक्षित रूप से किया जा सकता है? यदि यह हो सकता है, तो कुछ नुकसान क्या हैं जिन्हें मुझे टालना सुनिश्चित करना चाहिए? या मुझे इसे पूरा करने के लिए बस अपनी खुद की विधि के साथ आना चाहिए?

+1

यह सुनिश्चित नहीं है कि आपको जावास्क्रिप्ट से किस प्रकार का डेटाबेस प्राप्त हुआ है। लेकिन मुझे सभी प्रकार के "मुझे इस बारे में बुरा लगा है" जब एक वेब एप्लिकेशन की जावास्क्रिप्ट इतनी जटिल हो जाती है कि उसे डेटाबेस की आवश्यकता होती है ... –

+0

हाँ मुझे पता है कि आपका क्या मतलब है। दुर्भाग्य से मैं 100% सुनिश्चित हूं कि हम डेटा के सभी टुकड़ों को नहीं जानते हैं जिन्हें हमें किसी प्रकार की लचीली डेटा स्टोरेज विधि की आवश्यकता होती है जो सख्त फ़ील्ड और टेबल को नियंत्रित करता है। और मुझे 9 0% यकीन है कि मुझे इस डेटा से कभी पूछना नहीं होगा। –

उत्तर

7

यह ठीक है जब तक आप eval का उपयोग करके deserialize नहीं करते हैं।

+0

उत्तर के रूप में चुना गया क्योंकि यह शायद अधिक महत्वपूर्ण बिंदुओं में से एक है याद है। –

9

यह किया जा सकता है और मैंने इसे किया है। यह आपके डेटाबेस के रूप में सुरक्षित है।

केवल नकारात्मक पक्ष यह प्रश्नों में संग्रहीत डेटा का उपयोग करना व्यावहारिक रूप से असंभव है। ट्रैक के नीचे आप चाहते हैं कि आप फ़िल्टरिंग और सॉर्टिंग इत्यादि को सक्षम करने के लिए डेटा फ़ील्ड के रूप में डेटा संग्रहीत करेंगे।

चूंकि डेटा उपयोगकर्ता बनाया गया है सुनिश्चित करें कि आप स्वयं को बचाने के लिए डेटा डालने के लिए एक सुरक्षित विधि का उपयोग कर रहे हैं इंजेक्शन हमलों से (केवल डेटा स्ट्रिंग में डेटा को अंधाधुंध न करें)।

+0

+1 किसी भी प्रकार के सामान्य रूप के भयानक, भयानक उल्लंघन को इंगित करने के लिए +1 ... लेकिन कभी-कभी क्या किया जाना चाहिए: -/ – sleske

+2

यह सामान्य रूप का उल्लंघन क्यों होगा? यदि आप किसी ऐप की स्थिति को सहेजने के लिए इसका उपयोग कर रहे हैं, तो आप वास्तव में डेटा स्टोर करने के लिए इसका उपयोग नहीं कर रहे हैं, लेकिन सत्र-स्थिति को संग्रहीत करने के लिए (एक ओएस के लिए एक हाइबरनेशन/नींद की तरह), यह गलत क्यों होगा ? मैं मानता हूं कि यह एक हैक का थोड़ा सा हो सकता है, लेकिन इसे सीधे मानने की कोई ज़रूरत नहीं है, क्या है ... .. उत्तर के साथ कुछ भी गलत नहीं है ... – Nanne

1

क्योंकि आप डेटाबेस का उपयोग कर रहे हैं इसका मतलब है कि आपको डेटाबेस के साथ संवाद करने के लिए सर्वरसाइड भाषा की आवश्यकता है। आपके पास जो भी डेटा है, वह अधिकांश सर्वरसाइड भाषाओं के साथ आसानी से और जेसन में परिवर्तित हो जाता है।

मैं एक उचित USECASE कल्पना नहीं कर सकते जब तक आप जावास्क्रिप्ट की एक श * tload है, यह बहुत performant होने की जरूरत है, और आप इस तरह कैशिंग, क्वेरी अनुकूलन, आदि जैसे अन्य सभी संभावनाओं ... समाप्त हो

ऐसा करने का एक अन्य नकारात्मक पक्ष यह है कि आप आसानी से अपने डेटाबेस में डेटा से पूछ नहीं सकते हैं, जब आप किसी भी प्रकार की रिपोर्टिंग करना चाहते हैं तो हमेशा अच्छा होता है। और यदि आपकी जेसन संरचना बदलती है तो क्या होगा? क्या आप अपने डेटाबेस में सभी स्क्रिप्ट अपडेट करेंगे? या आप पार्सिंग कोड में बदलावों का सामना करने के लिए खुद को मजबूर करेंगे?

निष्कर्ष

IMHO यह ऐसा करने के लिए खतरनाक नहीं है बल्कि यह प्रबंधन क्षमता और भविष्य अद्यतन के लिए कोई गुंजाइश नहीं छोड़ देता है।

+0

उपयोग का मामला यह है कि इस परियोजना को लगातार नए पृष्ठों की आवश्यकता होगी, जिसमें व्यापक रूप से विभिन्न कार्यक्षमताओं और प्रति सप्ताह कम से कम चार बार डेटा के टुकड़े जोड़े जाएंगे। मैं आंकड़ों के सभी टुकड़ों की भविष्यवाणी नहीं कर सकता हूं जिन्हें अब तक प्रति सप्ताह चार बार प्रोजेक्ट को पुन: स्थापित करने और पुन: निर्माण करने की आवश्यकता है, जब तक कि डूम्सडे एक अच्छा विचार नहीं लगता है।चीजों के क्लाइंट साइड पर अधिकांश कार्यक्षमता कोड डालकर इन पृष्ठों को जोड़ा जा सकता है और "फ्लाई पर" बदला जा सकता है। –

+0

आपके पास एक अच्छा बिंदु है और यह मेरे सभी तर्कों को तुरंत अमान्य कर देता है। एक रोमांचक परिदृश्य की तरह लगता है :-) – Peter

+0

धन्यवाद। जब मैं अपनी पिछली टिप्पणी पोस्ट करता हूं और इसे देखता हूं तो मैं कोडिंग मोड में था, मुझे नहीं लगता कि मैंने अपना इच्छित स्वर व्यक्त किया है। क्षमा करें अगर यह किसी भी तरह से कठोर आया था। :) मैंने आपके इनपुट की सराहना की! –

संबंधित मुद्दे