2009-01-15 11 views
9

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

मुझे पता है कि StackOverflow WMD Markdown Editor, जो क्या मैं इस तथ्य के लिए यदि नहीं, पूरा करने के लिए कोशिश कर रहा हूँ के लिए एक उपयुक्त विकल्प की तरह लगता है कि यह दोनों एचटीएमएल का समर्थन करता है और Markdown जो leaves it open to XSS attacks उपयोग करता है।

+1

खोज कारणों से, शीर्षक के लिए "XSS की रोकथाम को बदलने के लिए उपयोगी हो सकता है (क्रॉस साइट स्क्रिप्टिंग) "शीर्षक के लिए। किसी ऐसे व्यक्ति के लिए जो अपने दोस्ताना नाम, एक्सएसएस नहीं जानता है, उन्हें इस धागे को खोजने में कठिन समय हो सकता है। – BuddyJoe

उत्तर

8

यदि आप किसी संपादक का उपयोग नहीं करना चाहते हैं तो आप OWASP's AntiSamy पर विचार कर सकते हैं।

आप यहाँ एक उदाहरण चला सकते हैं: http://www.antisamy.net/

3

आप कितने HTML का समर्थन करने जा रहे हैं? बस बोल्ड/इटालिक्स/मूल सामान? उस स्थिति में, आप उन्हें मार्कडाउन सिंटैक्स में परिवर्तित कर सकते हैं और फिर शेष HTML को स्ट्रिप कर सकते हैं।

इसे स्टोर करने से पहले स्ट्रिपिंग को सर्वर की तरफ करने की आवश्यकता है। SQL-भेद्यता और अन्य अवांछित सामग्री की जांच करते समय, आपको सर्वर पर इनपुट को भी सत्यापित करने की आवश्यकता है।

+0

ठीक है। एक श्वेतसूची दृष्टिकोण लें - एक काला सूची दृष्टिकोण नहीं। –

1

मुझे सुझाव है कि आप केवल मार्कडाउन सिंटैक्स सबमिट करें। फ्रंट एंड पर, क्लाइंट मार्कडाउन टाइप कर सकता है और एक HTML पूर्वावलोकन (एसओ के समान) हो सकता है, लेकिन केवल मार्कडाउन सिंटैक्स सर्वर-साइड सबमिट करें। फिर आप इसे सत्यापित कर सकते हैं, HTML उत्पन्न कर सकते हैं, इसे से बच सकते हैं और इसे स्टोर कर सकते हैं।

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

यदि कुछ विशिष्ट है जो आप HTML के साथ करना चाहते हैं, तो आप इसे कुछ सीएसएस विरासत के साथ बदल सकते हैं। 'एक {रंग: # एफ 0 एफ; } ', फ्रंट एंड जेएस या जेनरेट किए गए एचटीएमएल पर ट्रैक्सिंग मार्कडाउन से बस इसे स्टोर करने से पहले ट्रैवर्स करें।

0

आप एक HTML श्वेतसूची का उपयोग कर सकते हैं ताकि कुछ टैग अभी भी उपयोग किए जा सकें, लेकिन बाकी सब कुछ अवरुद्ध है।

ऐसे उपकरण हैं जो आपके लिए यह कर सकते हैं। SO the code का उपयोग करता है जो Slough linked

1

मैं FCKEditor के लिए वोट दूंगा लेकिन आपको लौटा हुआ आउटपुट too पर कुछ extra steps करना होगा।

2

आप ब्राउज़र में यह करने के लिए की जरूरत है: http://code.google.com/p/google-caja/wiki/JsHtmlSanitizer

+0

आप कभी भी उपयोगकर्ता इनपुट पर भरोसा नहीं कर सकते हैं, ब्राउज़र से आने वाली हर चीज को – rjlopes

+0

@rjlopes छेड़छाड़ की जा सकती है - यदि आप क्लाइंट में प्रेजेंटेशन के लिए सर्वर से सामग्री को स्वच्छ करने का प्रयास कर रहे हैं तो यह कोई समस्या नहीं है। –

+0

मेरी गलती मुझे लगा कि सर्वर पर जानकारी जमा करने से पहले क्लाइंट पर आवेदन करना था।हालांकि इस विशेष मामले में (आप नियंत्रण करते हैं, सर्वर) यह क्लाइंट पर sanitize करने के लिए ज्यादा समझ में नहीं आता है। एकमात्र मामला यह उपयोगी होना चाहिए जब आप तृतीय पक्ष वेबसाइटों पर AJAX अनुरोध करते हैं। – rjlopes

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