आपको केवल डेटाबेस स्तर पर SQL इंजेक्शन को रोकने की कोशिश नहीं करनी चाहिए। एक बार जब वे वहां पहुंच गए, तो वे ज्यादातर आपको पहले ही पा चुके थे। आपको पैरामीटर, मास्क इनपुट का उपयोग करना चाहिए और ऊपर की परत में पहले से ही खराब वर्णों को हटा देना चाहिए। एंटिटी फ्रेमवर्क जैसे टूल्स (फ्रेमवर्क?) खतरनाक पात्रों को स्वचालित रूप से हटा देते हैं।
DBMS_ASSERT.ENQUOTE_NAME
का उपयोग करना यहां बहुत अच्छा कर रहा है, लेकिन मैं इसे ऊपर की परतों में भी करने की सलाह दूंगा।
सामान्य नियम (जिसका आप यहां पालन करते हैं):उन सुरक्षा तंत्रों का उपयोग करें जो स्थापित और सिद्ध हैं, उन्हें फिर से न लगाएं!
इसके अलावा, एक बयान जैसे
select * from users where username = 'IAm"WayUp';
बिल्कुल कानूनी है और खतरनाक नहीं है।
और आप डीबी में फ़ंक्शन/प्रक्रिया को कैसे कहते हैं? आप वहां भी असुरक्षित हैं, है ना?.