2017-11-05 53 views
8

स्वरूपण की अनुमति दें मध्यम जैसे कई संपादक अब स्वरूपण प्रदान करते हैं। जो मैं डोम में देखता हूं उससे यह बस HTML जोड़ता है। लेकिन उपयोगकर्ता द्वारा लागू स्वरूपण को खोए बिना इस तरह के इनपुट को आप कैसे स्वच्छ करते हैं?जावास्क्रिप्ट संपादकों में sanitizing को संभालने के लिए कैसे करें

उदा। बोल्ड क्लिक करने जोड़ता है:

<strong class="markup--strong markup--p-strong">text</strong>

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

एक तरीका जिस तरह से मैं सोच सकता हूं, हर एचटीएमएल विशेष चरित्र से बच रहा है, लेकिन यह अजीब लगता है। जहां तक ​​मैं आपको केवल

+0

आपको स्रोत ढूंढना है - विशेष रूप से आप माध्यमों का जिक्र करते हैं? डीई टूल्स का उपयोग यह पता लगाने के लिए करें कि जेएस में जहां स्पॉट आउट हो रहा है, फिर इसे हटा दें –

उत्तर

3

को आउटपुट करते समय सामग्री को स्वच्छ करता हूं, जैसा कि आप वीपिन द्वारा बताए गए सर्वर साइड सेनिटाइज़र का उपयोग करते हैं, क्योंकि क्लाइंट साइड सत्यापन को छेड़छाड़ की संभावना है। ओडब्ल्यूएएसपी (ओपन वेब एप्लीकेशन सिक्योरिटी प्रोजेक्ट) में कुछ गाइड और सैनिटाइज़र हैं जिन्हें आप जावा-एचटीएमएल-सैनिटाइज़र की तरह इस्तेमाल कर सकते हैं।

अवधारणा पर एक सामान्य संक्षिप्त के लिए कृपया इस https://www.owasp.org/index.php/Data_Validation को स्वच्छता अनुभाग के तहत पढ़ें।

1

आप अन्य चरित्र के साथ सफेद सूचीबद्ध तत्वों, उदाहरण के लिए बदल सकते:

<strong.*> becomes |strong| 

तो फिर तुम सभी अन्य HTML को हटा दें। Onmouseover = "चेतावनी (1)" से अवगत रहें, इसलिए इसे वास्तव में सरल रखें।

उपयोगकर्ता इनपुट को प्रस्तुत करते समय भी सावधान रहें। इसे कोड के रूप में न जोड़ें। इसके बजाय इसे पार्स करें और जावास्क्रिप्ट का उपयोग करके तत्व बनाएं। कभी भी आंतरिक HTML का उपयोग न करें, लेकिन उपयोग करें .innerText और document.createElement()।

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