2012-04-26 4 views
5

उदाहरण के लिए मेरे पास जावास्क्रिप्ट-संचालित फॉर्म निर्माण उपकरण है। आप पाठ को संपादित करने के लिए तत्वों (जैसे इनपुट फ़ील्ड्स) और TinyMCE के HTML ब्लॉक जोड़ने के लिए लिंक का उपयोग करते हैं। ये एक ऑटोसव फ़ंक्शन के माध्यम से सहेजे जाते हैं जो विशिष्ट घटनाओं पर पृष्ठभूमि में AJAX कॉल करता है।जावास्क्रिप्ट के साथ उपयोगकर्ता HTML को संपादित और सहेजना - यह कितना सुरक्षित है?

सहेजने वाले फ़ंक्शन को डेटाबेस सुरक्षा करता है, लेकिन मुझे आश्चर्य है कि कोई उपयोगकर्ता डोम को किसी भी चीज को जोड़ने के लिए उपयोग कर सकता है (जैसे कस्टम HTML, या एक अवांछित स्क्रिप्ट)।

यह कितना सुरक्षित है, अगर बिल्कुल?

पहली चीज जो दिमाग में आती है वह यह है कि मुझे शायद एचटीएमएल कोड से किसी भी इनलाइन जावास्क्रिप्ट को खोजना चाहिए, और हटा देना चाहिए।

PHP, JQuery, Ajax का उपयोग करना।

+0

सभी उत्तरों सही लगते हैं, लेकिन मैं सबसे अच्छे के लिए समुदाय उपरोक्त गिनती के साथ जाऊंगा। सबको शुक्रीया! –

उत्तर

5

बिल्कुल सुरक्षित नहीं है। आप क्लाइंट पर भरोसा नहीं कर सकते हैं। क्लाइंट साइड पर डीओएम को संशोधित करने के लिए नौसिखिया के लिए भी आसान है (उदाहरण के लिए फ़ायरफ़ॉक्स के लिए फायरबग इंस्टॉल करें)।

हालांकि क्लाइंट से एचटीएमएल स्वीकार करना ठीक है, तो सुनिश्चित करें कि आप इसे सर्वर के पक्ष में PHP के साथ ठीक से मान्य और स्वच्छ कर दें।

+0

यदि आपको उपयोगकर्ता इनपुट एचटीएमएल को स्वच्छ करने की आवश्यकता है तो यह एक बहुत अच्छी लाइब्रेरी है: http://htmlpurifier.org/ – CD001

1

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

सभी इनलाइन-जेएस आसानी से हटा दिए जाते हैं।

आप कभी भी उपयोगकर्ता पर भरोसा कर सकते हैं!

1

बिल्कुल असुरक्षित, जब तक कि आप इसे सुरक्षित बनाने के लिए कदम नहीं उठाते। StackOverflow कुछ टैग की अनुमति देता है, फ़िल्टर किया जाता है ताकि उपयोगकर्ता दुर्भावनापूर्ण चीजें नहीं कर सकें। आपको निश्चित रूप से कुछ ऐसा करने की आवश्यकता होगी।

मैं इनपुट सर्वर पक्ष को स्वच्छ करने का विकल्प चुनता हूं ताकि प्रत्येक व्यक्ति को उनके इनपुट को संचरित किया जा सके, चाहे उन्होंने स्क्रिप्ट को अवरुद्ध कर दिया हो या नहीं। इस तरह कुछ उपयोग करना: http://www.phpclasses.org/package/3746-PHP-Remove-unsafe-tags-and-attributes-from-HTML-code.html या http://grom.zeminvaders.net/html-sanitizer AJAX के साथ लागू किया गया एक बहुत अच्छा समाधान होगा

+0

+1 किसी प्रस्तावित समाधान के लिए –

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