sql injection testing tutorial example
SQL इंजेक्शन उदाहरण और वेब अनुप्रयोगों पर SQL इंजेक्शन हमलों को रोकने के तरीके
किसी वेबसाइट या सिस्टम का परीक्षण करते समय, परीक्षक का उद्देश्य यह सुनिश्चित करना है कि परीक्षण किया गया उत्पाद उतना ही संरक्षित है, जितना संभव हो।
सुरक्षा परीक्षण आमतौर पर इस उद्देश्य के लिए किया जाता है। इस प्रकार के परीक्षण को करने के लिए, शुरू में, हमें विचार करने की आवश्यकता है कि कौन से हमले सबसे अधिक होने की संभावना है। SQL इंजेक्शन उन हमलों में से एक है।
SQL इंजेक्शन को सबसे आम हमलों में से एक माना जाता है क्योंकि यह आपके सिस्टम और संवेदनशील डेटा के लिए गंभीर और हानिकारक परिणाम ला सकता है।
आप क्या सीखेंगे:
- एसक्यूएल इंजेक्शन क्या है?
- SQL इंजेक्शन के जोखिम
- इस हमले का सार
- अनुशंसित उपकरण
- SQL इंजेक्शन के खिलाफ वेब अनुप्रयोगों की सुरक्षा परीक्षण
- इस हमले के कमजोर हिस्से
- स्वचालित SQL इंजेक्शन टेस्ट
- अन्य हमलों के साथ तुलना
- निष्कर्ष
- अनुशंसित पाठ
एसक्यूएल इंजेक्शन क्या है?
उपयोगकर्ता के कुछ इनपुट का उपयोग फ़्रेमिंग में किया जा सकता है SQL कथन फिर डेटाबेस पर एप्लिकेशन द्वारा निष्पादित किया जाता है। एप्लिकेशन द्वारा उपयोगकर्ता द्वारा दिए गए इनपुट को ठीक से संभालना संभव नहीं है।
यदि यह बात है तो, दुर्भावनापूर्ण उपयोगकर्ता उस एप्लिकेशन को अनपेक्षित इनपुट प्रदान कर सकता है जो तब डेटाबेस पर SQL स्टेटमेंट्स को फ्रेम करने और निष्पादित करने के लिए उपयोग किया जाता है। इसे SQL इंजेक्शन कहा जाता है। ऐसी कार्रवाई के परिणाम खतरनाक हो सकते हैं।
जैसा कि नाम से ही स्पष्ट है कि SQL इंजेक्शन हमले का उद्देश्य दुर्भावनापूर्ण SQL कोड को इंजेक्ट करना है।
वेबसाइट का प्रत्येक क्षेत्र डेटाबेस के गेट की तरह है। लॉगिन फ़ॉर्म में, उपयोगकर्ता लॉगिन डेटा में प्रवेश करता है, खोज क्षेत्र में उपयोगकर्ता एक खोज पाठ में प्रवेश करता है, डेटा बचत फ़ॉर्म में उपयोगकर्ता सहेजे जाने के लिए डेटा दर्ज करता है। ये सभी संकेतित डेटा डेटाबेस में जाते हैं।
सही डेटा के बजाय, यदि कोई दुर्भावनापूर्ण कोड दर्ज किया गया है, तो डेटाबेस और पूरे सिस्टम को कुछ गंभीर नुकसान होने की संभावना है।
SQL इंजेक्शन SQL प्रोग्रामिंग भाषा के साथ किया जाता है। SQL (स्ट्रक्चर्ड क्वेरी लैंग्वेज) का इस्तेमाल डेटाबेस में रखे गए डेटा को मैनेज करने के लिए किया जाता है। इसलिए इस हमले के दौरान, इस प्रोग्रामिंग भाषा कोड का उपयोग एक दुर्भावनापूर्ण इंजेक्शन के रूप में किया जा रहा है।
यह सबसे लोकप्रिय हमलों में से एक है, क्योंकि लगभग सभी प्रौद्योगिकियों के लिए डेटाबेस का उपयोग किया जाता है।
कई एप्लिकेशन कुछ प्रकार के डेटाबेस का उपयोग करते हैं। परीक्षण के तहत एक एप्लिकेशन में एक उपयोगकर्ता इंटरफ़ेस हो सकता है जो निम्नलिखित कार्यों को करने के लिए उपयोग किए जाने वाले उपयोगकर्ता इनपुट को स्वीकार करता है:
# 1) उपयोगकर्ता के लिए प्रासंगिक संग्रहीत डेटा दिखाएं एप्लिकेशन उपयोगकर्ता द्वारा दर्ज की गई लॉगिन जानकारी का उपयोग करके उपयोगकर्ता की साख की जांच करता है और उपयोगकर्ता के लिए केवल प्रासंगिक कार्यक्षमता और डेटा को उजागर करता है
#दो) उपयोगकर्ता द्वारा दर्ज किए गए डेटा को डेटाबेस में सहेजें उदा। एक बार जब उपयोगकर्ता किसी फॉर्म को भर देता है और उसे सबमिट कर देता है, तो एप्लिकेशन डेटा को डेटाबेस में सहेजने के लिए आगे बढ़ता है; यह डेटा तब उपयोगकर्ता को उसी सत्र में और बाद के सत्रों में उपलब्ध कराया जाता है
SQL इंजेक्शन के जोखिम
आजकल, लगभग सभी प्रणालियों और वेबसाइटों के लिए एक डेटाबेस का उपयोग किया जा रहा है, क्योंकि डेटा को कहीं संग्रहीत किया जाना चाहिए।
चूंकि संवेदनशील डेटा को डेटाबेस में संग्रहीत किया जा रहा है, सिस्टम की सुरक्षा में अधिक जोखिम शामिल हैं। यदि किसी व्यक्तिगत वेबसाइट या ब्लॉग का डेटा चोरी हो जाएगा, तो बैंकिंग प्रणाली से चोरी होने वाले डेटा की तुलना में बहुत नुकसान नहीं होगा।
इस हमले का मुख्य उद्देश्य सिस्टम के डेटाबेस को हैक करना है, इसलिए इस हमले के परिणाम वास्तव में हानिकारक हो सकते हैं।
SQL इंजेक्शन से निम्न बातें हो सकती हैं
- दूसरे व्यक्ति का खाता हैक करना।
- वेबसाइट के या सिस्टम के संवेदनशील डेटा को चुराना और कॉपी करना
- सिस्टम का संवेदनशील डेटा बदलना
- सिस्टम का संवेदनशील डेटा हटाना
- उपयोगकर्ता किसी अन्य उपयोगकर्ता के रूप में, यहां तक कि एक व्यवस्थापक के रूप में भी आवेदन कर सकता है।
- उपयोगकर्ता अन्य उपयोगकर्ताओं से संबंधित निजी जानकारी देख सकता है उदा। अन्य उपयोगकर्ताओं के प्रोफाइल, लेनदेन के विवरण आदि का विवरण।
- उपयोगकर्ता एप्लिकेशन कॉन्फ़िगरेशन जानकारी और अन्य उपयोगकर्ताओं के डेटा को बदल सकता है।
- उपयोगकर्ता डेटाबेस की संरचना को संशोधित कर सकता है; यहां तक कि अनुप्रयोग डेटाबेस में तालिकाओं को हटा दें।
- उपयोगकर्ता डेटाबेस सर्वर का नियंत्रण ले सकता है और उस पर कमांड निष्पादित कर सकता है।
उपरोक्त सूचीबद्ध जोखिमों को वास्तव में गंभीर माना जा सकता है, क्योंकि डेटाबेस या इसके डेटा को पुनर्स्थापित करने में बहुत खर्च हो सकता है। यह खोए हुए डेटा और सिस्टम को पुनर्स्थापित करने के लिए आपकी कंपनी को एक प्रतिष्ठा और पैसा खर्च कर सकता है। इसलिए इस प्रकार के हमले के खिलाफ अपने सिस्टम की रक्षा करने और अपने उत्पाद और कंपनी की प्रतिष्ठा में एक अच्छे निवेश के रूप में सुरक्षा परीक्षण पर विचार करने की अत्यधिक अनुशंसा की जाती है।
एक परीक्षक के रूप में, मैं टिप्पणी करना चाहूंगा, कि संभावित हमलों के खिलाफ परीक्षण एक अच्छा अभ्यास है भले ही सुरक्षा परीक्षण योजना नहीं बनाई गई थी। इस तरह आप अनपेक्षित मामलों और दुर्भावनापूर्ण उपयोगकर्ताओं के खिलाफ उत्पाद की सुरक्षा और परीक्षण कर सकते हैं।
इस हमले का सार
जैसा कि पहले उल्लेख किया गया है, इस हमले का सार डेटाबेस को दुर्भावनापूर्ण उद्देश्य से हैक करना है।
इस सुरक्षा परीक्षण को करने के लिए, शुरू में, आपको कमजोर सिस्टम भागों को खोजने की आवश्यकता है और फिर उनके माध्यम से डेटाबेस में दुर्भावनापूर्ण SQL कोड भेजें। यदि यह हमला किसी सिस्टम के लिए संभव है, तो उपयुक्त दुर्भावनापूर्ण SQL कोड भेजा जाएगा और डेटाबेस में हानिकारक क्रियाएं की जा सकती हैं।
वेबसाइट का प्रत्येक क्षेत्र डेटाबेस के गेट की तरह है। कोई भी डेटा या इनपुट जो हम आमतौर पर सिस्टम या वेबसाइट के किसी भी क्षेत्र में दर्ज करते हैं, डेटाबेस क्वेरी में जाता है। इसलिए, सही डेटा के बजाय, यदि हम कोई दुर्भावनापूर्ण कोड टाइप करते हैं, तो इसे डेटाबेस क्वेरी में निष्पादित किया जा सकता है और हानिकारक परिणाम ला सकता है।
अनुशंसित उपकरण
(१) किउवन
एसडीएलसी के हर चरण में अपने कोड में SQL इंजेक्शन जैसे कमजोरियों को आसानी से ढूंढें और ठीक करें। किउवन OWASP, CWE, SANS 25, HIPPA, और अधिक सहित सबसे कड़े सुरक्षा मानकों के अनुरूप है।
विकास के दौरान त्वरित प्रतिक्रिया के लिए अपनी आईडीई में किउवान को एकीकृत करें। Kiuwan सभी प्रमुख प्रोग्रामिंग भाषाओं का समर्थन करता है और प्रमुख DevOps टूल के साथ एकीकृत करता है।
=> अपने कोड को मुफ्त में स्कैन करें
इस हमले को करने के लिए, हमें एक उपयुक्त डेटाबेस क्वेरी के अधिनियम और उद्देश्य को बदलना होगा। प्रदर्शन करने के संभावित तरीकों में से एक यह है कि क्वेरी को हमेशा सही बनाएं और उसके बाद अपना दुर्भावनापूर्ण कोड डालें। डेटाबेस क्वेरी को हमेशा सही रखने के लिए ‘या 1 = 1; - जैसे सरल कोड के साथ प्रदर्शन किया जा सकता है।
परीक्षकों को ध्यान में रखना चाहिए, कि जाँच करते समय कि क्या क्वेरी को हमेशा सही करने के लिए प्रदर्शन किया जा सकता है या नहीं, विभिन्न उद्धरणों को आज़माया जाना चाहिए - एकल और डबल। इसलिए, यदि हमने ‘या 1 = 1 जैसे कोड की कोशिश की है; -, हमें दोहरे उद्धरण चिह्नों के साथ कोड भी आज़माना चाहिए' / 1 = 1; -।
उदाहरण के लिए, आइए विचार करें कि हमारे पास एक क्वेरी है, जो डेटाबेस तालिका में दर्ज शब्द की खोज कर रहा है:
नोट nt से चुनें जहाँ nt.subject = t search_word t;
इसलिए खोज शब्द के बजाय, यदि हम एक SQL इंजेक्शन क्वेरी 1 या 1 = 1; - दर्ज करते हैं, तो क्वेरी हमेशा सच हो जाएगी।
नोटों में से nt.subject = ‘1 या 1 = 1;
इस मामले में, पैरामीटर 'विषय' उद्धरण के साथ बंद है और फिर हमारे पास कोड या 1 = 1 है, जो एक क्वेरी को हमेशा सच बनाता है। साइन के साथ '-' हम शेष क्वेरी कोड पर टिप्पणी करते हैं, जिसे निष्पादित नहीं किया जाएगा। यह क्वेरी को नियंत्रित करने के लिए सबसे लोकप्रिय और सबसे आसान तरीकों में से एक है।
कुछ अन्य कोडों का उपयोग क्वेरी को हमेशा सच बनाने के लिए भी किया जा सकता है, जैसे:
- ‘या‘ एबीसी ‘=‘ एबीसी - ;;
- ‘या‘ ‘=‘ ‘;;
यहां सबसे महत्वपूर्ण बात यह है कि अल्पविराम चिह्न के बाद हम किसी भी दुर्भावनापूर्ण कोड को दर्ज कर सकते हैं, जिसे हम निष्पादित करना चाहते हैं।
उदाहरण के लिए, यह ‘या 1 = 1 हो सकता है; ड्रॉप टेबल नोट्स; -
यदि यह इंजेक्शन संभव है, तो किसी अन्य दुर्भावनापूर्ण कोड को लिखा जा सकता है। इस मामले में, यह केवल दुर्भावनापूर्ण उपयोगकर्ता के ज्ञान और इरादे पर निर्भर करेगा। SQL इंजेक्शन की जाँच कैसे करें?
इस भेद्यता की जाँच बहुत आसानी से की जा सकती है। कभी-कभी यह परीक्षण किए गए क्षेत्रों में ‘या' साइन करने के लिए पर्याप्त है। यदि यह कोई अप्रत्याशित या असाधारण संदेश देता है, तो हम सुनिश्चित कर सकते हैं, कि उस क्षेत्र के लिए SQL इंजेक्शन संभव है।
उदाहरण के लिए , यदि आपको खोज परिणाम के रूप में you आंतरिक सर्वर त्रुटि ‘जैसे त्रुटि संदेश मिलता है, तो हम यह सुनिश्चित कर सकते हैं, कि यह हमला सिस्टम के उस हिस्से में संभव है।
अन्य परिणाम, जो संभावित हमले को सूचित कर सकते हैं शामिल हैं:
- खाली पृष्ठ लोड किया गया।
- कोई त्रुटि या सफलता संदेश नहीं - कार्यक्षमता और पृष्ठ इनपुट पर प्रतिक्रिया नहीं करते हैं।
- दुर्भावनापूर्ण कोड के लिए सफलता संदेश।
आइए चारों ओर देखें कि यह कैसे काम करता है।
उदाहरण के लिए, यदि एक उपयुक्त लॉगिन विंडो SQL इंजेक्शन के लिए असुरक्षित है तो परीक्षण करें। इस प्रयोजन के लिए, ईमेल पते या पासवर्ड फ़ील्ड में, हम बस नीचे दिखाए अनुसार साइन इन करते हैं।
यदि इस तरह के इनपुट रिटर्न का परिणाम त्रुटि संदेश जैसा होता है like आंतरिक सर्वर त्रुटि result या कोई अन्य सूचीबद्ध अनुचित परिणाम, तो हम लगभग सुनिश्चित कर सकते हैं, कि यह हमला उस क्षेत्र के लिए संभव है।
बहुत मुश्किल है SQL इंजेक्शन कोड भी कोशिश की जा सकती है। मैं इस बात का उल्लेख करना चाहूंगा कि मेरे करियर में मुझे किसी भी मामले का सामना नहीं करना पड़ा है जब साइन के परिणामस्वरूप Error आंतरिक सर्वर त्रुटि ’संदेश था, लेकिन कई बार अधिक जटिल SQL कोड के लिए फ़ील्ड ने प्रतिक्रिया नहीं दी।
इसलिए एक एकल उद्धरण के साथ SQL इंजेक्शन की जाँच करना SQL यह जांचना काफी विश्वसनीय तरीका है कि यह हमला संभव है या नहीं।
यदि एकल उद्धरण किसी भी अनुचित परिणाम को वापस नहीं करता है, तो हम दोहरे उद्धरण चिह्नों को दर्ज करने और परिणामों की जांच करने का प्रयास कर सकते हैं।
साथ ही, क्वेरी को हमेशा सच में बदलने के लिए SQL कोड को यह जांचने का एक तरीका माना जा सकता है कि यह हमला संभव है या नहीं। यह पैरामीटर बंद कर देता है और क्वेरी को ‘true and में बदल देता है। इसलिए यदि मान्य नहीं किया जा रहा है, तो ऐसा इनपुट किसी भी अप्रत्याशित परिणाम को वापस कर सकता है और उसी को सूचित कर सकता है, कि इस मामले में यह हमला संभव है।
संभावित एसक्यूएल हमलों की जाँच वेबसाइट के लिंक से भी की जा सकती है। मान लीजिए हमारे पास एक वेबसाइट का लिंक है http://www.testing.com/books=1 । इस मामले में this किताबें parameter एक पैरामीटर है और ‘1‘ इसका मूल्य है। यदि दिए गए लिंक में हम 1 के बजाय instead साइन लिखेंगे, तो हम संभावित इंजेक्शन की जांच करेंगे।
इसलिए लिंक करें http://www.testing.com/books= एक परीक्षण की तरह होगा यदि वेबसाइट के लिए SQL हमला संभव है http://www.testing.com या नहीं।
इस मामले में, यदि लिंक http://www.testing.com/books= ‘आंतरिक सर्वर त्रुटि error या एक खाली पृष्ठ या किसी अन्य अप्रत्याशित त्रुटि संदेश की तरह एक त्रुटि संदेश देता है, तो हम यह भी सुनिश्चित कर सकते हैं, कि SQL इंजेक्शन उस वेबसाइट के लिए संभव है। बाद में, हम वेबसाइट के लिंक के माध्यम से अधिक ट्रिकी SQL कोड भेजने का प्रयास कर सकते हैं।
यह जांचने के लिए कि वेबसाइट के लिंक के माध्यम से यह हमला संभव है या नहीं, कोड जैसे 1 या 1 = 1; - को भी भेजा जा सकता है।
एक अनुभवी सॉफ्टवेयर परीक्षक के रूप में, मैं याद दिलाना चाहूंगा कि न केवल अप्रत्याशित त्रुटि संदेश को SQL इंजेक्शन भेद्यता माना जा सकता है। कई परीक्षक त्रुटि संदेशों के अनुसार ही संभावित हमलों की जांच करते हैं।
हालांकि, यह याद रखना चाहिए, कि दुर्भावनापूर्ण कोड के लिए कोई सत्यापन त्रुटि संदेश या सफलता संदेश भी संकेत नहीं हो सकता है, कि यह हमला संभव है।
SQL इंजेक्शन के खिलाफ वेब अनुप्रयोगों की सुरक्षा परीक्षण
सरल उदाहरणों के साथ समझाया गया वेब अनुप्रयोगों का सुरक्षा परीक्षण:
चूंकि इस भेद्यता तकनीक को अनुमति देने के परिणाम गंभीर हो सकते हैं, इसलिए यह इस प्रकार है कि इस हमले का परीक्षण किसी अनुप्रयोग के सुरक्षा परीक्षण के दौरान किया जाना चाहिए। अब इस तकनीक के अवलोकन के साथ, SQL इंजेक्शन के कुछ व्यावहारिक उदाहरणों को समझते हैं।
महत्वपूर्ण: इस एसक्यूएल इंजेक्शन टेस्ट का परीक्षण वातावरण में ही किया जाना चाहिए।
यदि एप्लिकेशन में एक लॉगिन पृष्ठ है, तो संभव है कि एप्लिकेशन डायनेमिक SQL का उपयोग करता है जैसे कि नीचे दिया गया कथन। यह कथन उपयोगकर्ता तालिका से उपयोगकर्ता विवरण के साथ कम से कम एक पंक्ति को वापस करने की उम्मीद करता है क्योंकि परिणाम सेट होने पर SQL कथन में उपयोगकर्ता नाम और पासवर्ड के साथ एक पंक्ति होती है।
उपयोगकर्ता से चुनें * उपयोगकर्ता कहां से हैं_नाम = str ”और strUserName और“ = और पासवर्ड = Users ”और StrPassword और '';
यदि परीक्षक strUserName के रूप में जॉन में प्रवेश करेगा (उपयोगकर्ता नाम के लिए पाठ बॉक्स में) और स्मिथ strPassword के रूप में (पासवर्ड के लिए पाठ बॉक्स में), उपरोक्त SQL कथन बन जाएगा:
SELECT * FROM Users WHERE User_Name = 'John' AND Password = 'Smith’;
यदि परीक्षक जॉन-के रूप में strUserName और कोई strPassword दर्ज करेगा, तो SQL कथन बन जाएगा:
SELECT * FROM Users WHERE User_Name = 'John'-- AND Password = 'Smith’;
ध्यान दें कि जॉन के बाद एसक्यूएल स्टेटमेंट का हिस्सा एक टिप्पणी में बदल गया है। यदि उपयोगकर्ता तालिका में जॉन के उपयोगकर्ता नाम के साथ कोई उपयोगकर्ता था, तो आवेदन परीक्षक को उपयोगकर्ता जॉन के रूप में लॉग इन करने की अनुमति दे सकता है। परीक्षक अब उपयोगकर्ता जॉन की निजी जानकारी देख सकता है।
क्या होगा अगर परीक्षक आवेदन के किसी भी मौजूदा उपयोगकर्ता का नाम नहीं जानता है? ऐसे मामले में, परीक्षक सामान्य उपयोगकर्ता नाम जैसे व्यवस्थापक, व्यवस्थापक और sysadmin आज़मा सकता है। यदि इनमें से कोई भी उपयोगकर्ता डेटाबेस में मौजूद नहीं है, तो परीक्षक जॉन को '' x '=' x के रूप में strUserName और स्मिथ के 'या' x '=' x के रूप में दर्ज कर सकता है। इससे SQL स्टेटमेंट नीचे दिए गए जैसा हो जाएगा।
SELECT * FROM Users WHERE User_Name = 'John' or 'x'='x' AND Password = 'Smith’ or ‘x’=’x’;
चूंकि 'x' = 'x' की स्थिति हमेशा सत्य होती है, इसलिए परिणाम सेट में उपयोगकर्ता तालिका की सभी पंक्तियाँ शामिल होंगी। एप्लिकेशन टेस्टर को उपयोगकर्ता तालिका में पहले उपयोगकर्ता के रूप में लॉग इन करने की अनुमति दे सकता है।
महत्वपूर्ण: परीक्षक को निम्नलिखित हमलों का प्रयास करने से पहले डेटाबेस व्यवस्थापक या डेवलपर से प्रश्न में तालिका की प्रतिलिपि बनाने का अनुरोध करना चाहिए।
यदि परीक्षक जॉन में प्रवेश करेगा '; DROP तालिका users_details; '- strUserName के रूप में और strPassword के रूप में कुछ भी, SQL कथन नीचे की तरह हो जाएगा।
SELECT * FROM Users WHERE User_Name = ‘John’; DROP table users_details;’ –‘ AND Password = 'Smith';
इस कथन के कारण तालिका 'users_details' डेटाबेस से स्थायी रूप से हटा दी जा सकती है।
यद्यपि उपरोक्त उदाहरण SQL इंजेक्शन तकनीक का उपयोग केवल लॉगिन पृष्ठ से करते हैं, परीक्षक को इस तकनीक का परीक्षण आवेदन के सभी पृष्ठों पर करना चाहिए जो उपयोगकर्ता इनपुट को पाठ्य प्रारूप में स्वीकार करते हैं। खोज पृष्ठ, प्रतिक्रिया पृष्ठ, आदि।
एसएसएल का उपयोग करने वाले अनुप्रयोगों में एसक्यूएल इंजेक्शन संभव हो सकता है। यहां तक कि एक फ़ायरवॉल भी इस तकनीक के खिलाफ आवेदन की रक्षा करने में सक्षम नहीं हो सकता है।
मैंने इस हमले की तकनीक को सरल रूप में समझाने की कोशिश की है। मैं चाहूंगा कि इस हमले का पुन: परीक्षण केवल एक परीक्षण वातावरण में किया जाना चाहिए न कि विकास पर्यावरण, उत्पादन पर्यावरण या किसी अन्य वातावरण में।
इंस्टाग्राम पोस्टिंग शेड्यूल करने के लिए सबसे अच्छा ऐप
मैन्युअल रूप से परीक्षण के बजाय कि क्या एप्लिकेशन SQL हमले के लिए असुरक्षित है या नहीं, कोई भी उपयोग कर सकता है वेब भेद्यता स्कैनर इस भेद्यता के लिए जाँच करता है।
संबंधित पढ़ने: वेब अनुप्रयोग का सुरक्षा परीक्षण । विभिन्न वेब भेद्यताओं पर अधिक जानकारी के लिए इसे जांचें।
इस हमले के कमजोर हिस्से
परीक्षण प्रक्रिया शुरू करने से पहले, प्रत्येक ईमानदार परीक्षक को कम या ज्यादा पता होना चाहिए कि इस हमले में कौन से हिस्से संभवत: सबसे कमजोर होंगे।
यह योजना बनाने के लिए एक अच्छा अभ्यास है कि सिस्टम के किस क्षेत्र को वास्तव में और किस क्रम में परीक्षण किया जाना है। अपने परीक्षण करियर में, मैंने सीखा है, कि एसक्यूएल हमलों के खिलाफ खेतों का परीक्षण करना एक अच्छा विचार नहीं है क्योंकि कुछ क्षेत्रों को याद किया जा सकता है।
जैसा कि यह हमला डेटाबेस में किया जा रहा है, सभी डेटा एंट्री सिस्टम पार्ट्स, इनपुट फ़ील्ड और वेबसाइट लिंक असुरक्षित हैं।
कमजोर भागों में शामिल हैं:
- लॉगिन फ़ील्ड
- खोज फ़ील्ड
- टिप्पणी फ़ील्ड
- किसी भी अन्य डेटा प्रविष्टि और बचत फ़ील्ड
- वेबसाइट के लिंक
यह ध्यान रखना महत्वपूर्ण है कि इस हमले के खिलाफ परीक्षण करते समय यह केवल एक या कुछ क्षेत्रों की जांच करने के लिए पर्याप्त नहीं है। यह काफी सामान्य है, कि एक क्षेत्र को SQL इंजेक्शन से बचाया जा सकता है, लेकिन फिर दूसरा नहीं। इसलिए यह महत्वपूर्ण है कि वेबसाइट के सभी क्षेत्रों का परीक्षण न करें।
स्वचालित SQL इंजेक्शन टेस्ट
जैसा कि कुछ परीक्षण किए गए सिस्टम या वेबसाइट काफी जटिल हो सकते हैं और संवेदनशील डेटा होते हैं, मैन्युअल रूप से परीक्षण करना वास्तव में कठिन हो सकता है और इसमें बहुत समय लगता है। इसलिए विशेष उपकरणों के साथ इस हमले के खिलाफ परीक्षण वास्तव में कई बार सहायक हो सकता है।
ऐसा ही एक SQL इंजेक्शन उपकरण है सोप यूआई । अगर हमारे पास एपीआई स्तर पर स्वचालित प्रतिगमन परीक्षण हैं, तो हम इस उपकरण के उपयोग से इस हमले के खिलाफ जाँच को भी बंद कर सकते हैं। SOAP UI टूल में, इस हमले के खिलाफ जाँच के लिए पहले से तैयार कोड टेम्प्लेट हैं। उन टेम्प्लेट को आपके स्वयं के लिखित कोड द्वारा भी पूरक किया जा सकता है।
यह काफी विश्वसनीय उपकरण है।
हालांकि, एपीआई स्तर पर एक परीक्षण पहले से ही स्वचालित होना चाहिए, जो इतना आसान नहीं है। विभिन्न ब्राउज़र प्लगइन्स का उपयोग करके स्वचालित रूप से परीक्षण करने का एक और संभावित तरीका है।
यह उल्लेख किया जाना चाहिए, कि भले ही स्वचालित उपकरण आपके समय की बचत करें, लेकिन उन्हें हमेशा बहुत विश्वसनीय नहीं माना जाता है। यदि हम बैंकिंग प्रणाली या किसी भी वेबसाइट को बहुत संवेदनशील डेटा के साथ परीक्षण कर रहे हैं, तो इसे मैन्युअल रूप से परीक्षण करने की अत्यधिक अनुशंसा की जाती है। जहां आप सटीक परिणाम देख सकते हैं और उनका विश्लेषण कर सकते हैं। साथ ही, इस मामले में, हम सुनिश्चित हो सकते हैं, कि कुछ भी छोड़ दिया गया था।
अन्य हमलों के साथ तुलना
SQL इंजेक्शन को सबसे गंभीर हमलों में से एक माना जा सकता है, क्योंकि यह डेटाबेस को प्रभावित करता है और आपके डेटा और पूरे सिस्टम को गंभीर नुकसान पहुंचा सकता है।
यह सुनिश्चित करने के लिए कि यह जावास्क्रिप्ट इंजेक्शन या HTML इंजेक्शन की तुलना में अधिक गंभीर परिणाम हो सकता है, क्योंकि ये दोनों क्लाइंट-साइड पर किए गए हैं। तुलना के लिए, इस हमले के साथ, आप पूरे डेटाबेस तक पहुंच सकते हैं।
यह उल्लेख किया जाना चाहिए, कि इस हमले के खिलाफ परीक्षण करने के लिए, आपको SQL प्रोग्रामिंग भाषा का काफी अच्छा ज्ञान होना चाहिए और सामान्य तौर पर, आपको पता होना चाहिए कि डेटाबेस क्वेरी कैसे काम कर रही है। इस इंजेक्शन के हमले का प्रदर्शन करते समय आपको अधिक सावधान और चौकस रहना चाहिए, क्योंकि किसी भी तरह की अशुद्धि को एसक्यूएल भेद्यता के रूप में छोड़ा जा सकता है।
निष्कर्ष
मुझे उम्मीद है कि आपको स्पष्ट पता चल गया होगा कि SQL इंजेक्शन क्या है और हमें इन हमलों को कैसे रोकना चाहिए।
हालांकि, हर बार इस तरह के हमले के खिलाफ परीक्षण करने की अत्यधिक अनुशंसा की जाती है जब एक डेटाबेस के साथ एक प्रणाली या वेबसाइट का परीक्षण किया जा रहा है। किसी भी बचे हुए डेटाबेस या सिस्टम की कमजोरियों से कंपनी की प्रतिष्ठा और पूरे सिस्टम को बहाल करने के लिए बहुत सारे संसाधन खर्च हो सकते हैं।
के रूप में इस इंजेक्शन के खिलाफ परीक्षण सबसे खोजने के लिए मदद करता है महत्वपूर्ण सुरक्षा कमजोरियाँ , यह भी अपने ज्ञान और परीक्षण उपकरण में निवेश करने की सिफारिश की है।
यदि सुरक्षा परीक्षण की योजना बनाई गई है, तो SQL इंजेक्शन के खिलाफ परीक्षण को पहले परीक्षण भागों में से एक के रूप में योजना बनाई जानी चाहिए।
क्या आप किसी विशिष्ट एसक्यूएल इंजेक्शन के पार आए हैं? नीचे टिप्पणी अनुभाग में अपने अनुभव साझा करने के लिए स्वतंत्र महसूस करें।
अनुशंसित पाठ
- HTML इंजेक्शन ट्यूटोरियल: उदाहरण और उदाहरण के साथ रोकथाम
- सर्वश्रेष्ठ सॉफ्टवेयर परीक्षण उपकरण 2021 [क्यूए टेस्ट स्वचालन उपकरण]
- शुरुआती के लिए गहराई से ग्रहण ट्यूटोरियल
- विनाशकारी परीक्षण और गैर विनाशकारी परीक्षण ट्यूटोरियल
- परीक्षण प्राइमर eBook डाउनलोड
- कार्यात्मक परीक्षण बनाम गैर-कार्यात्मक परीक्षण
- SOA परीक्षण ट्यूटोरियल: SOA आर्किटेक्चर मॉडल के लिए परीक्षण पद्धति
- उपकरण और उदाहरण के साथ जोड़ी परीक्षण या अखिल जोड़े परीक्षण ट्यूटोरियल