मैं एसक्यूएल प्रश्नों में मापदंडों का उपयोग करने की अच्छाई के बारे में अपने सहयोगियों और यहां एसओ दोनों को प्रचार कर रहा हूं, विशेष रूप से .NET अनुप्रयोगों में। मैं भी एसक्यूएल इंजेक्शन हमलों के खिलाफ प्रतिरक्षा देने के रूप में उन्हें वादा करने के लिए इतनी दूर चला गया है।
लेकिन मुझे आश्चर्य हो रहा है कि क्या यह वास्तव में सच है। क्या कोई ज्ञात एसक्यूएल इंजेक्शन हमले हैं जो एक पैरामीटर क्वेरी के खिलाफ सफल होंगे? क्या आप उदाहरण के लिए एक स्ट्रिंग भेज सकते हैं जो सर्वर पर एक बफर अतिप्रवाह का कारण बनता है?
यह सुनिश्चित करने के लिए कि एक वेब एप्लिकेशन सुरक्षित है (उपयोगकर्ता इनपुट और इस तरह के सभी सामान को साफ करने की तरह), लेकिन अब मैं एसक्यूएल इंजेक्शन के बारे में सोच रहा हूं, अन्य विचार हैं। मुझे विशेष रूप से MsSQL 2005 और 2008 के खिलाफ हमलों में दिलचस्पी है क्योंकि वे मेरे प्राथमिक डेटाबेस हैं, लेकिन सभी डेटाबेस दिलचस्प हैं।
संपादित करें: यह स्पष्ट करने के लिए कि मैं मापदंडों और मानकीकृत प्रश्नों से क्या मतलब रखता हूं। एक स्ट्रिंग में sql क्वेरी बनाने के बजाय "वैरिएबल्स" का उपयोग करने का मेरा मतलब है कि मापदंडों का उपयोग करके।
इसलिए ऐसा करने के बजाय:
SELECT * FROM Table WHERE Name = 'a name'
हम यह करते हैं:
SELECT * FROM Table WHERE Name = @Name
और फिर क्वेरी / कमांड ऑब्जेक्ट पर @Name पैरामीटर का मान सेट करें।