2010-01-08 5 views
6

sanitizing XSS हमलों को रोकने के इरादे में के लिए एमएस विरोधी XSS पुस्तकालय का उपयोग करना, मैं एक डेटाबेस और retrieves में एक पृष्ठ, जिसमें हम एक पाठ बॉक्स है कि HTML स्वीकार करता है, भंडार इसे अपडेट करने कर रहा हूँ और बाद में यह हो जाता है।एचटीएमएल

मेरे समझ है कि मैं AntiXSS.GetSafeHtmlFragment() पद्धति का उपयोग करके एचटीएमएल स्वच्छ कर सकते हैं। जब तक मैं डेटाबेस में HTML संग्रहीत करने से पहले ऐसा करता हूं, क्या मैं कवर किया गया हूं? क्या वेब पेज पर HTML आउटपुट होने पर मुझे कुछ भी करने की ज़रूरत है?

इसके अलावा, यह प्रतीत होता है कि सफेद सूची एक ब्लैक बॉक्स की तरह है। क्या हमारी आवश्यकताओं के आधार पर इसे अपडेट करने का कोई तरीका है?

उत्तर

4

आपको सेट किया जाना चाहिए। हालांकि स्पष्ट रूप से यह आपको डेटाबेस में पहले से ही कुछ भी नहीं बचाएगा।

आप AntiXSS.GetSafeHtmlFragment() का उपयोग करते समय जब बचत के बजाय पेज outputting सकता है। लेकिन बचत करते समय करना संभवतः सुरक्षित है। यद्यपि प्रतिपादन और बचत करते समय आप इसे दोनों नहीं करना चाहेंगे।

श्वेतसूची संपादन योग्य नहीं है।

+0

दुर्भाग्य से, AntiXSS.GetSafeHtmlFragment() (पुराने संस्करण में कमजोर और नए संस्करण में बेकार होने के लिए यह स्ट्रिप्स दिया लगभग सभी एचटीएमएल टैग संभव)। – BornToCode

1

आप लगभग वहां हैं। आपको यह सुनिश्चित करना होगा कि you choose the proper encoding। उदाहरण के लिए, यदि उपयोगकर्ता इनपुट यूआरएल में जाता है, तो आपको AntiXSS.UrlEncode() का उपयोग करना होगा, और यदि यह जावास्क्रिप्ट में जाता है तो आप AntiXSS.JavaScriptEncode() का उपयोग करना चाहते हैं। यदि आप आउटपुट प्रारूप को इनपुट करते समय इनपुट को सहेजते समय गारंटी नहीं दे सकते हैं, तो आउटपुट समय पर sanitizing करना बेहतर है।

+0

... एसक्यूएल इंजेक्शन –

+0

के लिए sanitize को याद रखना, यदि उपयोगकर्ता HTML में प्रवेश करता है जिसे मैं GetSafeHtmlFragment का उपयोग करके sanitize करता हूं, तो मुझे सभी यूआरएल (ए href) और जेएस कोड को थ्रोग करना होगा और AntiXSS.UrlEncode और AntiXSS के माध्यम से गुजरना होगा। JavaScriptEncode? – Nick

+0

आपको उस संदर्भ के लिए आउटपुट से बचने की ज़रूरत है जिसका उपयोग किया जा रहा है। आम तौर पर लोग इसे एक टेम्पलेट सिस्टम का उपयोग करके पूरा करते हैं जो प्रत्येक आउटपुट को व्यक्तिगत रूप से जांचने के बजाय, आउटपुट के रूप में चीजों को स्वत: सहेजता है। मेरे द्वारा लिंक किए गए पूरे लेख को पढ़ें, इसे मदद करनी चाहिए: http://msdn.microsoft.com/en-us/library/aa973813.aspx – Annie

3

"ब्लैक बॉक्स" के बारे में अपने प्रश्न के बारे में: हाँ, यह एक ब्लैक बॉक्स है, और मैं समझता हूँ कि आप उसे संपादित नहीं कर सकते हैं। यदि आप अधिक ग्रैन्युलरिटी की तलाश में हैं, तो AntiSamy.NET project देखें।

3

नवीनतम 4.x एंटी-एक्सएसएस पुस्तकालयों में, GetSafeHtml() और SetSafeHtmlFragment() Microsoft में Sanitizer क्लास के अंतर्गत हैं। सुरक्षा। अनुप्रयोग, जिसे HtmlSanitizationLibrary असेंबली में ले जाया गया था।

[पदावनत लिंक: http://www.microsoft.com/en-us/download/details.aspx?id=28589] अपडेट: यह लगता है कि उस NuGet पैकेज में ले जाया गया था: https://www.nuget.org/packages/HtmlSanitizationLibrary/