2012-06-04 4 views
6

मैंने एक्सएसएस के संबंध में एसओ पर बहुत सारी पोस्टिंग और कैसे निपटने के लिए पढ़ा है। आम तौर पर, सर्वसम्मति ब्लैकलिस्ट पर श्वेतसूची है और नियमित अभिव्यक्तियों का उपयोग करने से बचती है (इससे निपटने के लिए बहुत से प्रकार)।टिनीएमसीई, एंटीएक्सएसएस, एमवीसी 3 और गेटसेफ एचटीएमएल फ्रैगमेंट

मैं एएसपी.NET MVC3 एप्लिकेशन पर काम कर रहा हूं। मुझे उपयोगकर्ता प्रविष्टि से एचटीएमएल प्रदर्शित करने में सक्षम होना चाहिए (उदा। < मजबूत>, < उल>, < li>, आदि ...) लेकिन मुझे कोई एक्सएसएस जोखिम नहीं चाहिए।

मैं Nuget के माध्यम से AntiXSS पैकेज का उपयोग कर रहा हूं। मेरे मॉडल में, मेरे पास

[AllowHtml] 
public string UserDetails{ get; set; } 

मेरे विचार में, मेरे पास TinyMCE textarea में लगा हुआ है।

मेरी नियंत्रक में, मैं दृश्य से पद मिलता है और यह स्वच्छ:

using Microsoft.Security.Application; 
... 
string SanitizedDetails = Sanitizer.GetSafeHtmlFragment(model.UserDetails); 

मेरा प्रश्न: मैं इसे सही किया? क्या मैं अधिकांश एक्सएसएस मुद्दों से सुरक्षित हूं या क्या मैं गलत पेड़ को भड़क रहा हूं?

उत्तर

4

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

मदद करने के लिए अन्य विकल्प हैं लेकिन दुर्भाग्य से सब कुछ उत्पादन तैयार नहीं है। सामग्री सुरक्षा नीति शीर्षलेख हैं जो आंशिक रूप से विभिन्न ब्राउज़रों द्वारा समर्थित हैं। पूर्व: http://www.w3.org/TR/CSP/

तो तुम्हारे पास क्या है सभ्य है, लेकिन आप यह एक छोटा सा बढ़ाने सकता है अगर आप (एक के लिए) सामग्री सुरक्षा नीति में उद्यम के लिए

मैं यहाँ काफी कुछ XSS हमलों पर जाने के लिए चाहते हैं अगर आपको रुचि हो तो। http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=hack-proofing-dotnet-app

यदि आप किसी अन्य हमले (उदाहरण के लिए एसक्यूएल इंजेक्शन) के मामले में आपके एचटीएमएल में xss कोड डाला है तो आप प्रतिपादन (और बचत से पहले) से पहले एक अतिरिक्त स्वच्छता शामिल करना चाह सकते हैं।

0

जब हम व्हाइटलिस्ट की सहायता से Sanitizer.GetSafeHtmlFragment(model.UserDetails); का उपयोग करते हैं तो यह किसी भी टैग को इसके माध्यम से निष्पादित करने की अनुमति नहीं देगा। उदाहरण के लिए जब

model.UserDetails = "Testdata `<script>alert('Malicious Code');</script>`" 

यह एक इंजेक्शन कोड है के लिए, SafeHtmlFragment विधि <script> टैग निष्पादित करने के लिए अनुमति नहीं है।

model.UserDetails = "Testdata `<a href="www.google.com">Google <a/>`" 

यह एक सुरक्षित कोड है जहां इसे google.com पर नेविगेट करने के लिए एक टेक्स्ट और Google हाइपरलिंक वापस करना चाहिए।

जब model.UseDetails केवल टेस्टडाटा आउटपुट के रूप में लौटाता है।

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