2010-05-06 12 views
5

मैं WMD संपादक के इनपुट को स्वच्छ करने के तरीकों को खोजने का प्रयास कर रहा हूं।WMD संपादक sanitizing

विशेष रूप से, मैं HTML टैग केवल <code> टैग्स में उपलब्ध कराने की कोशिश कर रहा हूं जो WMD उत्पन्न करता है। क्या यह संभव है

मेरी समस्या यह है कि निम्न कोड HTML के रूप में प्रस्तुत किया गया है जो संभावित XSS attacks के लिए उपयुक्त है।

उदाहरण के लिए, <a onmouseover="alert(1)" href="#">read this!</a>

ऊपर कोड पूर्वावलोकन मोड में सामान्य रूप से दोनों रेंडर और जब डेटाबेस से बचा लिया।

मुझे लगता है कि स्टैक ओवरफ़्लो में यह समस्या प्रतीत नहीं होती है। वही कोड सिर्फ पाठ के रूप में प्रस्तुत किया जाता है।

मुझे पता है कि स्टैक ओवरफ़्लो टीम ने अपना कोड http://refactormycode.com/codes/333-sanitize-html में साझा किया है। क्या ऐसा करने के लिए डब्लूएमडी को स्वच्छ करने के लिए मुझे वास्तव में सी # का उपयोग करना होगा?

+1

कोई भी मेरे प्रश्न का उत्तर दे सकता है? किसी ने पहले यह नहीं किया? –

उत्तर

3

मैं इसके लिए HTML Purifier का उपयोग कर समाप्त हुआ।

1

यदि आप क्लाइंट पक्ष पर डब्लूएमडी से खराब स्क्रिप्ट को अवरुद्ध करना चाहते हैं, तो मेरा उत्तर यहां देखें: Align the WMD editor's preview HTML with server-side HTML validation (e.g. no embedded JavaScript code)

यह दिखाता है कि WMD संपादक में क्लाइंट-साइड श्वेतसूची को कैसे कार्यान्वित किया जाए ताकि WMD के पूर्वावलोकन फलक HTML को ज्ञात-सुरक्षित HTML तत्वों और ज्ञात-सुरक्षित HTML विशेषताओं तक सीमित किया जा सके। यह के बाद प्रमाणीकरण करता है डब्लूएमडी अपने एचटीएमएल को जेनरेट करता है, भले ही डब्लूएमडी संपादक की एचटीएमएल पीढ़ी में कोई बग है, जो खराब स्क्रिप्ट को प्राप्त करने की अनुमति देता है, श्वेतसूची अवरोधक इसे पकड़ लेगा। यह कोड एक ही सत्यापन के StackOverflow.com के कार्यान्वयन पर आधारित है।

उस ने कहा, आपको सर्वर-साइड सत्यापन भी चाहिए (यदि आप PHP का उपयोग कर रहे हैं, HTML Purifier एक अच्छी पसंद है), क्योंकि यदि आप क्लाइंट को ठीक करते हैं, तो यह किसी हमलावर को ब्राउज़र को अनुकरण करने से नहीं रोकता है और इसे अपने सर्वर पर पोस्ट करके दुर्भावनापूर्ण मार्कडाउन को सहेजना। इसलिए क्लाइंट-साइड डब्लूएमडी पूर्वावलोकनकर्ता सत्यापन वास्तव में आवश्यक नहीं है, एक अस्पष्ट मामले के खिलाफ बचाव के अलावा जहां एक हमलावर सर्वर पर समझौता किए गए मार्कडाउन को प्रबंधित करने का प्रबंधन करता है, और पेज को संपादित करने के लिए साइट मॉडरेटर को विश्वास दिलाता है। उस स्थिति में, क्लाइंट डब्लूएमडी पूर्वावलोकनकर्ता सत्यापन किसी हमलावर को पूरी साइट पर लेने से रोक सकता है।

साथ ही, क्लाइंट-साइड सत्यापन करना उपयोगी हो सकता है क्योंकि तब आप जानते हैं कि क्लाइंट द्वारा अनुमत एक ही टैग और HTML को सर्वर पर भी अनुमति दी जाएगी। क्लाइंट श्वेतसूची के साथ सर्वर-साइड श्वेतसूची को सिंक करना सुनिश्चित करें। यदि आप एक उदाहरण चाहते हैं तो StackOverflow की श्वेतसूची here है।

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

  • कोई संबंधित समस्या नहीं^_^