2010-01-11 17 views
5

में नि: शुल्क प्रतिक्रिया टेक्स्ट फ़ील्ड पर एसक्यूएल इंजेक्शन को रोकें मुझे कुछ फ्री-प्रतिक्रिया टेक्स्ट फ़ील्ड हैं और मुझे यकीन नहीं है कि एसक्यूएल इंजेक्शन को रोकने के लिए उन्हें कैसे साफ़ किया जाए। कोई विचार?क्लासिक एएसपी

+0

यदि आप http://stackoverflow.com/questions/tagged/sqlinjection की खोज की थी तो आपको खुद का जवाब मिल गया होगा। –

+1

@ जॉन का मतलब है http://stackoverflow.com/questions/tagged/sql-injection+asp-classic और फिर भी उनमें से एक को डुप्लीकेट के रूप में चिह्नित किया गया था। – cregox

उत्तर

16

क्वेरी में उपयोगकर्ता के इनपुट को जोड़ने के बजाय parameterized query बनाएं।

यहाँ कैसे क्लासिक एएसपी में यह करने के लिए है: http://blog.binarybooyah.com/blog/post/Classic-ASP-data-access-using-parameterized-SQL.aspx

यह ध्यान रखना भी एक ही तरीका है कि आप एसक्यूएल इंजेक्शन से 100% सुरक्षित हो सकता है किसी भी एसक्यूएल बयान उपयोगकर्ता इनपुट का उपयोग करता है parameterize करने के लिए है कि महत्वपूर्ण है, यहां तक ​​कि एक बार यह डेटाबेस में है। उदाहरण: मान लें कि आप पैरामीटरयुक्त क्वेरी या संग्रहीत प्रक्रिया के माध्यम से उपयोगकर्ता इनपुट लेते हैं। आप सम्मिलित होने पर सुरक्षित रहेंगे, हालांकि आपको यह सुनिश्चित करना होगा कि उस इनपुट का उपयोग करने वाली सड़क के नीचे कुछ भी पैरामीटर का उपयोग करता है। उपयोगकर्ता इनपुट को सीधे संयोजित करना कहीं भी एक बुरा विचार है, जिसमें डीबी के अंदर भी शामिल है।

+2

और यदि आपको क्लासिक एएसपी लिखना है, तो इसे जेस्क्रिप्ट में करें, बहुत अच्छा! और, आईआईआरसी, भी बेहतर प्रदर्शन करता है। – RedFilter

+2

@ ऑर्बमन: यह सब प्रासंगिक कैसे है ?? जेस्क्रिप्ट अच्छा है अगर आप खुद को अलग नहीं करते हैं, हालांकि एएसपी का विशाल बहुमत वीबीस्क्रिप्ट में है। स्पष्ट रूप से यदि आपको क्लासिक एएसपी का उपयोग करना है तो इसे वीबीस्क्रिप्ट में करें, उदाहरणों को एकीकृत करने के लिए यह बहुत आसान है और अन्य विशिष्ट एएसपी देवों को पढ़ने के लिए आसान होगा। – AnthonyWJones

0

storedprocedure पर कॉल करें।

EDIT: बस स्पष्ट करने के लिए। एक एसपी में गतिशील एसक्यूएल बनाना निश्चित रूप से ऐप में ऐसा करने के रूप में खतरनाक हो सकता है, लेकिन एक क्वेरी में उपयोगकर्ता इनपुट बाध्यकारी आपको एसक्यूएल इंजेक्शन के खिलाफ सुरक्षा देगा, जैसा कि यहां वर्णित है (ऑरैक-विशिष्ट चर्चा, लेकिन सिद्धांत कहीं और लागू होता है):

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:23863706595353

यह गतिशील एसक्यूएल कि मुद्दा है नहीं है (सभी एसक्यूएल ओरेकल वास्तव में गतिशील है - समर्थक * ग/plsql में भी स्थिर एसक्यूएल)। यह समस्या है जो इस वर्ग के " निर्माण" है। यदि कोई उपयोगकर्ता आपको इनपुट देता है - उन्हें क्वेरी में BOUND होना चाहिए - संगत नहीं है। दूसरा आप अपने SQL में उपयोगकर्ता इनपुट को संयोजित करें - ऐसा लगता है कि आपने उन्हें कोड पास करने की क्षमता दी है और आप उस कोड को निष्पादित करते हैं। सादा और सरल।

+3

इसे विश्वास मत करो। यह एक मिथक है कि संग्रहित प्रक्रियाएं एसक्यूएल इंजेक्शन भेद्यता के खिलाफ सुरक्षा करती हैं। आप एक कोड में एक असुरक्षित गतिशील एसक्यूएल क्वेरी बनाने की संभावना है जैसे कि एप्लिकेशन कोड में। –

+0

मैं एक एसपी के भीतर गतिशील एसक्यूएल निर्माण की वकालत नहीं कर रहा हूं, लेकिन स्पैम के भीतर पैरामीटरयुक्त कथन के पैरामीटर के रूप में पाठ फ़ील्ड प्रविष्टियां प्रदान करता हूं। – davek

संबंधित मुद्दे