एक बात यह है कि आप नहीं करना चाहिए इनपुट डेटा को फ़िल्टर करने के रूप में फ़िल्टर करें। लोग अक्सर यह सुझाव देते हैं, क्योंकि यह सबसे आसान समाधान है, लेकिन इससे समस्याएं होती हैं।
इनपुट डेटा HTML के रूप में आउटपुट होने के अलावा कई स्थानों पर भेजा जा सकता है। यह डेटाबेस में संग्रहीत किया जा सकता है, उदाहरण के लिए। डेटाबेस में भेजे गए डेटा को फ़िल्टर करने के नियम एचटीएमएल आउटपुट को फ़िल्टर करने के नियमों से बहुत अलग हैं। यदि आप इनपुट पर सबकुछ HTML- एन्कोड करते हैं, तो आप अपने डेटाबेस में HTML के साथ समाप्त हो जाएंगे। (यही कारण है कि PHP का "जादू उद्धरण" सुविधा एक बुरा विचार है।)
आप अपने इनपुट डेटा की यात्रा करने वाले सभी स्थानों की अपेक्षा नहीं कर सकते हैं। सुरक्षित दृष्टिकोण को से पहले कहीं भी भेजा गया है, इसे कहीं भी भेजना है। यदि आप इसे डेटाबेस में भेज रहे हैं, तो एकल उद्धरण से बचें। यदि आप HTML आउटपुट कर रहे हैं, तो HTML इकाइयों से बचें। और एक बार इसे कहीं भेजा जाता है, अगर आपको अभी भी डेटा के साथ काम करने की ज़रूरत है, तो मूल अन-बच संस्करण का उपयोग करें।
यह अधिक काम है, लेकिन आप इसे टेम्पलेट इंजन या पुस्तकालयों का उपयोग करके कम कर सकते हैं।
स्रोत
2008-09-13 17:02:05
असल में, आपको HTML टैग या विशेषता के अंदर मौजूद सभी टेक्स्ट को एन्कोड करना चाहिए - भले ही यह उपयोगकर्ता से आया हो। उदाहरण के लिए: 'Barnes & Noble's Books' –