मैं सोच रहा था कि पाठ प्रविष्टि फ़ील्ड से "<script"
की जांच और निकालने के लिए जावास्क्रिप्ट कोड इंजेक्शन हमलों को रोकने के लिए पर्याप्त होगा?एक्सएसएस रोकथाम। हैंडलिंग <स्क्रिप्ट पर्याप्त है?
उत्तर
दुर्भाग्यवश नहीं, विभिन्न प्रकार के हमले उपलब्ध हैं, उदाहरण के लिए <img>
तत्व के माध्यम से जावास्क्रिप्ट को निष्पादित करना। मैं सर्वर-साइड पर जो भी प्लेटफॉर्म पर हूं, उसके लिए एक्सएसएस लाइब्रेरी का उपयोग करने की सलाह देता हूं।
यहाँ मैं क्या मतलब है की एक उदाहरण है:
<img src="javascript:alert('hi');">
<input type="image" src="javascript:alert('hi');">
... नहीं उन उदाहरण के लिए खुद को हानिरहित हैं, लेकिन आप देखते हैं कि कैसे वहाँ जावास्क्रिप्ट निष्पादित करने के लिए दूसरों के तरीके हैं। कौन सा शोषण काम ब्राउज़र पर निर्भर करता है, लेकिन केवल जागरूक रहें कि वहाँ अन्य विधियां हैं।
आप कौन सी लाइब्रेरी की सिफारिश करेंगे? – samy
@ निक, उन एक्सएसएस पुस्तकालय क्या करने में सक्षम हैं? – Starx
@ सैमी - यह प्लेटफ़ॉर्म पर निर्भर करता है, मुझे यकीन नहीं है कि ओपी में सर्वर-साइड - PHP, ASP.Net, रूबी क्या है? @Starx - ये पुस्तकालय आने वाले एचटीएमएल को उचित रूप से स्वच्छ करके विभिन्न एक्सएसएस हमले तरीकों के सभी (या * उम्मीदवार * सभी) को अलग करने में विशेषज्ञ हैं। –
निक ने उल्लेख किया उन लोगों के लिए इसके अलावा, आप भी इस तरह के रूप में जावास्क्रिप्ट घटनाओं, के लिए लुक-आउट पर होना चाहिए: "ऑनलोड" "onclick", ...
माइस्पेस क्योंकि सीएसएस भाव के हैक की गई थी । ब्लैकलिस्टिंग काम नहीं करेगा, व्हाइटलिस्टिंग एकमात्र रास्ता है।
नहीं, विशिष्ट मामलों को अवरुद्ध करना पर्याप्त नहीं है - जितनी जल्दी या बाद में, कोई ऐसे व्यक्ति के साथ आएगा जिस पर आपने नहीं सोचा था।
सबसे आम लोगों के लिए यह list of XSS attacks देखें (अन्य, अभी भी अधिक विदेशी, मौजूद हो सकता है)। आपको यह मानने के बजाय अनुमत वाक्यविन्यास को श्वेतसूची में डालना होगा कि ज्ञात वैक्टर के बगल में सब कुछ ठीक होना चाहिए।
+1 वह लिंक उत्कृष्ट है, मुझे पता था कि ब्लैकलिस्टिंग एक असंभव कार्य था, लेकिन मुझे यह नहीं पता था कि यह कितना असंभव है। मैंने कुछ साल पहले कुछ बहुत ही बेवकूफ ब्लैकलिस्टिंग कोड लिखा था, यह उन हमलों में से बहुत कम पकड़ेगा – andynormancx
@andynormancx: yup, पोस्टेल का कानून वापस आ गया है: उदाहरणों का एक बड़ा हिस्सा अमान्य मार्कअप है, जो ब्राउज़र को कुछ चीज़ में परिवर्तित कर देता है मान्य लेकिन बुरा। – Piskvor
मुझे विशेष रूप से žscriptualert (EXSSE) ž/scriptu उदाहरण पसंद आया, जब एएससीआईआई उत्सर्जित साइट में इंजेक्शन दिया गया जो चलने योग्य कोड, प्रभावशाली हो जाता है। – andynormancx
यह इस बात पर भी निर्भर करता है कि आप इनपुट के साथ क्या कर रहे हैं।
यह एक का चयन क्षेत्र जिसके साथ आप पाठ के रंग का चयन करने में सक्षम थे निहित: यहाँ एक सरल उदाहरण मैं कुछ ग्रीटिंग कार्ड सेवा का एक वास्तविक वेबसाइट पर पाया है
<select name="color">
<option value="red">Red</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
</select>
मूल्य इस्तेमाल किया गया था ग्रीटिंग कार्ड पेज पर unfiltered। तो यह भेजा पोस्ट डेटा छेड़छाड़, और जैसे
color=red%22+onload%3D%22alert(%27foo%27)
कुछ करने के लिए बदल
color=red
जो
<font color="red" onload="alert('foo')">
बजाय
<font color="red">
में परिणाम होगा करने के लिए आसान है।
तो बिंदु उपयोगकर्ता से किसी भी इनपुट पर भरोसा नहीं करता है, यहां तक कि परिभाषित मूल्यों को भी पूर्वनिर्धारित नहीं करता है।
<s<scriptcript
एक हटाने के बाद <script
बन जाता है।
यदि आप इसे अवरुद्ध करते हैं, तो बहुत सारे लोग हैं। से बचने के लिए यह बहुत आसान और अधिक सही है (हटाएं नहीं) सभी घटनाएं <
, "
और &
।
जबकि "
मुझे यह देखकर खुशी हो रही है कि भारी जवाब ** नहीं ** .. – rook