मैं तुम्हें करने के लिए इसे बाहर तोड़ने के लिए नफरत है, लेकिन -
- XSS एक आउटपुट समस्या है, नहीं एक इनपुट समस्या। फ़िल्टरिंग/इनपुट को मान्य करना रक्षा की एक अतिरिक्त परत है, लेकिन यह आपको XSS से पूरी तरह से सुरक्षित नहीं रख सकता है। XSS cheatsheet by RSnake पर एक नज़र डालें - फ़िल्टर से बचने के लिए बहुत सारे तरीके हैं।
- विरासत आवेदन को ठीक करने का कोई आसान तरीका नहीं है। आपको अपने एचटीएमएल या जावास्क्रिप्ट फाइलों में जो कुछ भी डाला गया है उसे ठीक से एन्कोड करना होगा, और इसका मतलब यह है कि एचटीएमएल उत्पन्न करने वाले कोड के हर टुकड़े पर फिर से जाना चाहिए।
XSS को रोकने के तरीके के बारे में जानकारी के लिए OWASP's XSS prevention cheat sheet देखें।
नीचे दी गई कुछ टिप्पणियां बताती हैं कि इनपुट सत्यापन समय के दौरान एन्कोडिंग/एस्केपिंग की बजाय बेहतर रणनीति है। मैं सिर्फ
OWASP's XSS prevention cheat sheet -
परंपरागत रूप से, अविश्वसनीय डेटा को संभालने के लिए इनपुट सत्यापन पसंदीदा तरीका रहा है। हालांकि, इनपुट सत्यापन इंजेक्शन हमलों के लिए एक अच्छा समाधान नहीं है। सबसे पहले, गंतव्य मान्यता मिलने से पहले डेटा प्राप्त होने पर इनपुट सत्यापन किया जाता है। इसका मतलब है कि हम नहीं जानते कि लक्ष्य दुभाषिया में कौन से वर्ण महत्वपूर्ण हो सकते हैं। दूसरा, और संभवतः और भी महत्वपूर्ण बात यह है कि अनुप्रयोगों को संभावित रूप से हानिकारक पात्रों को अनुमति देना चाहिए। उदाहरण के लिए, क्या श्रीमान O'Malley को डेटाबेस में पंजीकरण करने से रोका जाना चाहिए क्योंकि एसक्यूएल 'विशेष चरित्र' मानता है?
विस्तृत करने के लिए - जब उपयोगकर्ता O'Malley की तरह स्ट्रिंग में प्रवेश करता है, तो आप नहीं जानते कि आपको जावास्क्रिप्ट में या HTML या किसी अन्य भाषा में उस स्ट्रिंग की आवश्यकता है या नहीं। यदि जावास्क्रिप्ट में है, तो आपको इसे O\x27Malley
के रूप में प्रस्तुत करना होगा, और यदि यह HTML में है, तो यह O'Malley
जैसा दिखना चाहिए। यही कारण है कि यह अनुशंसा की जाती है कि आपके डेटाबेस में स्ट्रिंग को संग्रहीत किया जाना चाहिए जिस तरह से उपयोगकर्ता दर्ज करता है, और फिर आप स्ट्रिंग के अंतिम गंतव्य के अनुसार उचित रूप से बच जाते हैं।
स्रोत
2010-09-03 19:10:11
नोट सब्सक्राइब करना चाहिए कि आप इसे सर्वर साइड प्रोग्रामिंग भाषा/ढांचे का उपयोग कर, का उपयोग नहीं रोकना चाहते हैं ग्राहक पक्ष एक (जेएस की तरह)। क्लाइंट साइड भाषाएं क्लाइंट द्वारा अक्षम, अक्षम और धोखा देने योग्य हैं। – BalusC
कृपया देखें: दुर्भाग्यवश, http://www.petefreitag.com/item/759.cfm – Henry