2010-12-02 4 views
5

मुझे आश्चर्य है कि XSS से साइट को सुरक्षित बनाने के लिए न्यूनतम क्या है।क्या मेरी साइट एक्सएसएस से सुरक्षित है यदि मैं '<' के साथ सभी '<' को प्रतिस्थापित करता हूं?

यदि मैं बस <&lt; के साथ सभी उपयोगकर्ता सबमिट की गई सामग्री में प्रतिस्थापित करता हूं, तो मेरी साइट XSS से सुरक्षित होगी?

उत्तर

5

संदर्भ पर भारी निर्भर करता है।

इसके अलावा, केवल एक से अधिक एन्कोडिंग एक विचार की फ्लैश नहीं है। तुम सिर्फ सभी पात्रों जो विशेष अर्थ नहीं होता और XSS लिए इस्तेमाल किया जा सकता है ...

  • <
  • >
  • "
  • '
  • &

एक के लिए सांकेतिक शब्दों में बदलना चाहिए छोटे से एन्कोडिंग के मामले में मामूली उदाहरण इससे कोई फर्क नहीं पड़ता इस तरह कुछ है ...

डोडी साइट पर आपका स्वागत है। कृपया अपने होमपेज से लिंक करें।

दुर्भावनापूर्ण उपयोगकर्ता में प्रवेश करती है ...

http://www.example.com" onclick="window.location = 'http://nasty.com'; return false; 

कौन सा जाहिर हो जाता है ...

<a href="http://www.example.com" onclick="window.location = 'http://nasty.com'; return false;">View user's website</a> 

था आप दोहरे उद्धरण चिह्नों इनकोडिंग, उस हमले मान्य नहीं होगा।

+1

+1 - अच्छा उदाहरण। – Yahel

+0

+1 के लिए – Kyle

+0

@alex - क्या आपको लगता है कि केवल 'से कम' एन्कोडिंग ठीक रहेगी यदि मैंने कभी भी सामग्री को आउटपुट किया था, तो

$ outputcontenthere

'? – Kyle

0

यदि आप सभी उपयोगकर्ता इनपुट से बचते हैं तो आपको सुरक्षित होना चाहिए।

इसका मतलब यह है कि यह सब कुछ दिखाता है। प्रोफाइल पर एक उपयोगकर्ता नाम भी।

+1

विशेष रूप से उपयोगकर्ता नाम। मजेदार चीजें तब हो सकती हैं जब एक सामाजिक वेबसाइट पर कोई उपयोगकर्ता जावास्क्रिप्ट को उसके उपयोगकर्ता नाम में डाल सकता है। उपयोगकर्ताओं की एक सूची उन साइटों पर अक्सर प्रदर्शित होती है ... :-) कहा जा रहा है कि, आपको वास्तव में हर उपयोगकर्ता इनपुट, या बल्कि हर अविश्वसनीय इनपुट से बचना चाहिए। – paprika

+0

@paprika: हर कोई उपयोगकर्ता नाम से प्रभावित होगा ... मैंने इसके बारे में नहीं सोचा था। – John

+8

क्या आपने वास्तव में अपने बेटे 'रॉबर्ट' का नाम दिया था); ड्रोप टेबल छात्रों; - '? – eyelidlessness

2

नहीं। आपको इसमें शामिल होने के बावजूद सभी उपयोगकर्ता इनपुट से बचना होगा।

+1

मैंने आपके एचटीएमएल हेक्स को टेस्ट पेज में चिपकाया है, जैसा कि मैं कुछ सर्वरसाइड आउटपुट करता हूं। टेक्स्ट ' 'पृष्ठ पर दिखाई देता है, लेकिन यह वास्तव में स्क्रिप्ट को चलाता नहीं है। एचटीएमएल हेक्स या बेस 64 एन्कोडिंग कैसे चल रहा है? – Kyle

+0

आप सही हैं। मेरे उदाहरणों को हटा रहा है। उत्कृष्ट उदाहरण – Yahel

2

ऐसे मामले भी हैं जहां पृष्ठ की एन्कोडिंग की गणना की जाती है। हां - यदि आपका पृष्ठ चरित्र सेट सही नहीं है या सभी लागू स्थानों में मेल नहीं खाता है, तो संभावित भेद्यताएं हैं। विवरण के लिए http://openmya.hacker.jp/hasegawa/security/utf7cs.html देखें।

2

आपके द्वारा उपयोग किए जा रहे ढांचे के आधार पर, अब कई में इनपुट सत्यापन मॉड्यूल है। जब मैं व्याख्यान करता हूं तो मैं एक महत्वपूर्ण टुकड़ा सॉफ्टवेयर छात्रों को बताता हूं इनपुट वैल्यूशन मॉड्यूल का उपयोग करें जो पहले से ही मौजूद है!

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

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

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