2009-04-07 11 views
12

मैं वर्तमान में XSS से मेरी क्लासिक एएसपी आवेदन को सुरक्षित करने की कोशिश कर रहा हूँ। मैं नेट पर माइक्रोसॉफ्ट से एंटीएक्सएसएस में आया और मैं सोच रहा था कि यह क्लासिक एप्लिकेशन के साथ काम करेगा या नहीं?विरोधी XSS और क्लासिक एएसपी

अगर आप किसी भी विचार है कि कैसे मैं तार sanitizing के बारे में जा सकते हैं ऐसा नहीं?

उत्तर

13

तार मैं एनकोड HTML हैं सभी उत्पादन स्वच्छ करने के लिए, विशेष वर्ण या बड़ा regex भाव

Server.HTMLEncode(string) 

क्रॉस-साइट स्क्रिप्टिंग हमलों को रोकने के दो सबसे महत्वपूर्ण countermeasures के साथ चारों ओर Dink है कि जिस तरह से आप की जरूरत नहीं है हैं:

  • इनपुट रोकें।
  • एनकोड उत्पादन।
How To: Prevent Cross-Site Scripting in ASP.NET के माध्यम से

(i I'ts क्लासिक नहीं एएसपी जानते हैं, लेकिन वहाँ इसी तरह के प्रिंसिपलों रहे हैं)

+0

@Steoates: यह, यहां, आमतौर पर एक सुंदर सभ्य समाधान है। –

+0

और तुम (, पुराने सिस्टम विलाप) रिच टेक्स्ट प्रदर्शित करते हैं, कई रेगुलर एक्सप्रेशन का उपयोग करने के लिए एक सफाई समारोह लेखन करने के लिए क्या करता है, तो सही दिशा में कम से कम एक कदम है। –

+0

OWASP के अनुसार बस HTMLEncoding पर्याप्त नहीं है। देखें: https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#Why_Can.27t_I_Just_HTML_Entity_Encode_Untrusted_Data.3F – blischalk

0

नहीं आसानी से - यदि आप एक COM-प्रतिदेय आवरण बनाने के लिए, सर्वर पर स्थापित करते हैं, आदि मैं बस नहीं लगता कि यह के लिए "क्लासिक" एएसपी एक उपयुक्त फिट है करते देख सकते हैं।

1

आप (मैं अपने वर्तमान प्रोजेक्ट में करते हैं) कुछ HTML टैग की अनुमति देनी है, तो आप केवल उन टैग अनुमति देने के लिए एक regex उपयोग कर सकते हैं और कोई अन्य, ऐसा नहीं:

set objRegExp = new RegExp 
with objRegExp 
    .Pattern = "<^((b)|(i)|(em)|(strong)|(br))>.*</.*>" 
    .IgnoreCase = varIgnoreCase 
    .Global = True 
end with 
cleanString = objRegExp.replace(originalString, "") 
0
<% 
Response.AddHeader "X-XSS-Protection", "1" 
%> 
संबंधित मुद्दे