ओडब्ल्यूएएसपी इस रणनीति पर कुछ जानकारी है। यह हमेशा एक आखिरी विकल्प होना चाहिए (जैसा कि लेख मैं को जोड़ने कर रहा हूँ में समझाया गया है) लेकिन अगर यह आपके ही एकमात्र विकल्प है ...
http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
यह एक last- होने के बारे में लेख से एक उद्धरण खाई विकल्प
हालांकि, इस पद्धति पैरामिट्रीकृत प्रश्नों उपयोग की तुलना में कमजोर है। इस तकनीक को केवल होना चाहिए, सावधानी के साथ, विरासत कोड को लागत प्रभावी तरीके से फिर से निकालने के लिए उपयोग किया जाना चाहिए। स्क्रैच से बने अनुप्रयोग, या अनुप्रयोगों को कम जोखिम सहिष्णुता की आवश्यकता होती है या पैरामीटरकृत क्वेरी का उपयोग करके फिर से लिखा जाना चाहिए।
संक्षेप में, इस दृष्टिकोण के खिलाफ तर्क भले ही आप सभी ज्ञात गलत इनपुट भागने करते हैं, तो कोई गारंटी नहीं है कि किसी को एक तरह से भविष्य inthe यह नाकाम करने के लिए साथ नहीं आएगा है।
हालांकि, आपके सवाल का विशेष रूप से बचने के लिए लेख मैं ऊपर से जुड़ा हुआ है वर्णों की एक सूची जवाब देने के लिए ...
।
संपादित करें जैसा कि उल्लेख किया गया है, लेख बहुत अच्छे लिंक प्रदान नहीं करता है। हालांकि, SQL सर्वर के लिए, यह एक करता है: http://msdn.microsoft.com/en-us/library/ms161953.aspx
ध्यान दें कि पात्रों की सूची आप डीबी मंच आधार पर भिन्न होगी बचने के लिए की जरूरत है, लेकिन आप एसक्यूएल सर्वर का उपयोग कर रहे है, तो यह प्रासंगिक होना चाहिए जैसे कि यह लग रहा है। ।
छनन इनपुट भी बच पात्रों को हटाने के द्वारा एसक्यूएल इंजेक्शन के खिलाफ की रक्षा करने में सहायक हो सकता है: नीचे दिए गए लेख से
उद्धरण।हालांकि, बड़ी संख्या में वर्णों की वजह से समस्याएं पैदा हो सकती हैं, यह एक विश्वसनीय रक्षा नहीं है। निम्नलिखित उदाहरण वर्ण स्ट्रिंग डिलीमीटर के लिए खोज करता है।
private string SafeSqlLiteral(string inputSQL)
{
return inputSQL.Replace("'", "''");
}
क्लाज की तरह
ध्यान दें कि यदि आप एक तरह खंड का उपयोग कर रहे, वाइल्डकार्ड वर्णों अभी भी फरार हो जाना चाहिए:
s = s.Replace("[", "[[]");
s = s.Replace("%", "[%]");
s = s.Replace("_", "[_]");
ouch। आमतौर पर यह 3 है) जिसे एसक्यूएल इंजेक्शन को रोकने के लिए संशोधित किया जाना चाहिए। याद रखें, यह "एसक्यूएल इंजेक्शन" है, न कि "एसक्यूएल अस्वीकृति"। एक बार यह डीबी तक पहुंच जाता है, इसे पहले से ही साफ किया जाना चाहिए। लेकिन अगर आप कहते हैं कि आप ऐप नहीं बदल सकते हैं, तो मुझे लगता है कि आप नहीं कर सकते। जवाब देखने में रुचि रखते हैं। – RPM1984