जैसा कि अन्य ने बताया है, #2 सही उत्तर है। इसे तब तक "कच्चा" छोड़ दें जब तक आपको इसकी आवश्यकता न हो, फिर उचित रूप से बच जाएं।
क्यों (और मैं अन्य पोस्ट को दोहराऊंगा/सारांशित करूंगा) के बारे में विस्तार से बताने के लिए, आइए परिदृश्य 1 को उसके तार्किक चरम पर ले जाएं।
क्या होता है जब कोई " ' OR 1=1 <other SQL injection> --
. में प्रवेश करता है "। अब शायद आप यह तय करें कि क्योंकि आप SQL का उपयोग करते हैं, आपको SQL के लिए एन्कोड करना चाहिए (हो सकता है क्योंकि आपने पैरामीटरयुक्त कथनों का उपयोग नहीं किया है)। तो अब आपको SQL और HTML एन्कोडिंग को मिलाना (या तय करना) है।
अचानक आपका बॉस फैसला करता है कि वह एक एक्सएमएल आउटपुट भी चाहता है। अब अपने पैटर्न को एक जैसा बनाए रखने के लिए आपको उसके लिए भी एनकोड करना होगा।
अगला सीएसवी - अरे नहीं! क्या होगा यदि पाठ में उद्धरण और अल्पविराम हैं? अधिक बच निकलना!
अरे - कैसे एक अच्छा इंटरैक्टिव, AJAX इंटरफ़ेस के बारे में? अब आप शायद JSON को ब्राउज़र पर वापस भेजना शुरू करना चाहते हैं, इसलिए अब {, [आदि। सभी को ध्यान में रखा जाना चाहिए। मदद!!
तो स्पष्ट रूप से, डेटा को दिए गए के रूप में संग्रहीत करें (निश्चित रूप से डोमेन बाधाओं के अधीन) और अपने आउटपुट के लिए उपयुक्त एन्कोड करें जिस समय आपको इसकी आवश्यकता हो . आपका आउटपुट आपके डेटा के समान नहीं है।
मुझे आशा है कि यह उत्तर बहुत अधिक संरक्षण देने वाला नहीं है। अन्य उत्तरदाताओं को श्रेय।