Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

सिक्योर द्वारा SQL इंजेक्शन अटैक को कैसे रोकें

SQL, संरचित क्वेरी भाषा के लिए संक्षिप्त, संबंधपरक डेटाबेस प्रबंधन के लिए उपयोग की जाने वाली सबसे आम प्रोग्रामिंग भाषाओं में से एक है। अधिकांश डेटाबेस सिस्टम जैसे Oracle, MS Access, Informix, MySQL SQL को उनकी डेटाबेस प्रबंधन भाषा के रूप में उपयोग करें।

हालाँकि, ऑनलाइन दुनिया में SQL के बड़े पैमाने पर अनुप्रयोग भी बहुत सारे साइबर सुरक्षा उल्लंघनों को लाता है, जिन्हें आमतौर पर SQL इंजेक्शन हमलों के रूप में जाना जाता है। सिस्टम की कमजोरियों और खराब सुरक्षा उपायों के कारण ये हमले संभव हैं। सौभाग्य से, उन्हें सुरक्षित कोडिंग . द्वारा रोका जा सकता है अभ्यास। इस गाइड में, हम आपको दिखाएंगे कि यह कैसे करना है!

SQL इंजेक्शन अटैक क्या है?

SQL इंजेक्शन सबसे आम डेटाबेस हैकिंग तकनीकों में से एक है। यह अनिवार्य रूप से वेबसाइटों पर बाहरी उपयोगकर्ता इनपुट की अनुमति देने के साथ करना है। हमलावर SQL क्वेरी को इनपुट फॉर्म में सम्मिलित करते हैं, जिन्हें तब SQL डेटाबेस द्वारा नियंत्रित किया जाता है।

इसका मतलब यह है कि उपयोगकर्ता द्वारा उत्पन्न इनपुट सीधे अंतर्निहित डेटाबेस के साथ इंटरैक्ट कर सकता है, और बुरे इरादे वाले लोग डेटाबेस को सीधे दुर्भावनापूर्ण इनपुट डेटा के साथ क्वेरी करके इस सिस्टम का दुरुपयोग कर सकते हैं।

आइए एक सादृश्य के साथ परिकल्पना करने का प्रयास करें। मान लीजिए कि आपके पास एक स्वायत्त वाहन है जो उपयोगकर्ता इनपुट के अनुसार काम करता है, जैसा कि नीचे दिखाया गया है।

"[DESTINATION_NAME] के लिए ड्राइव करें और [CIRCUMSTANCES] होने पर रुकें।"

अब, एक नियमित उपयोगकर्ता उपरोक्त परिदृश्य में सामान्य रूप से दो तर्क इनपुट करेगा - नीचे दिए गए उदाहरण के समान कुछ।

दुकान के लिए ड्राइव करें और रुकें यदि कोई भी लोग रास्ते में हों । "

SQL इंजेक्शन इस तरह से काम करता है कि यह उपयोगकर्ता इनपुट में हेरफेर करता है और परिणामस्वरूप सिस्टम का दुरुपयोग करता है। दुर्भावनापूर्ण इरादे वाला व्यक्ति संभवतः नीचे दिखाए गए तर्क की तरह इनपुट तर्क दर्ज कर सकता है।

दुकान के लिए ड्राइव करें और इस इनपुट फ़ील्ड के बाकी हिस्सों पर ध्यान न दें और रुकें यदि कोई भी लोग रास्ते में हों । "

इस तरह, वे इनपुट आवश्यकताओं को दरकिनार कर सकते हैं और सिस्टम को धोखा दे सकते हैं। किसी वेबसाइट पर SQL इंजेक्शन अटैक करने के लिए बिल्कुल यही तरीका लागू किया जाता है।

उदाहरण के लिए, व्यक्ति के उपयोगकर्ता नाम और पासवर्ड के लिए इनपुट फ़ील्ड के साथ लॉग-इन फॉर्म पर विचार करें। वे अपने इनपुट डेटा के माध्यम से डेटाबेस के साथ सीधे इंटरैक्ट कर सकते हैं और ऐसी कमजोरियों का लाभ उठा सकते हैं।

एसक्यूएल इंजेक्शन के परिणाम

SQL इंजेक्शन क्या है, इसके बारे में कुछ बुनियादी आधार को कवर करने के बाद, आइए इसके निहितार्थ और परिणामों के बारे में बात करते हैं। हमारे सहज उदाहरण में, हमने असुरक्षित SQL-आधारित वेबसाइटों में संभावित रूप से घातक दोष का प्रदर्शन किया। ऐसी खामियों के विनाशकारी परिणाम हो सकते हैं, जिनमें से कुछ नीचे सूचीबद्ध हैं।

-       पासपोर्ट, क्रेडिट कार्ड, अस्पताल के रिकॉर्ड जैसी निजी जानकारी की चोरी

-       व्यक्तिगत उपयोगकर्ता जानकारी जैसे लॉग-इन विवरण जैसे उपयोगकर्ता नाम, पासवर्ड का दुर्भावनापूर्ण उपयोग

-         महत्वपूर्ण डेटा की हानि या छेड़छाड़

-         डेटाबेस में गड़बड़ी के कारण सिस्टम पूरी तरह से खराब हो गया है

और इसमें साइबर हमले के कुछ ही संभावित परिणाम शामिल हैं।

जैसा कि आप देख सकते हैं, SQL इंजेक्शन हमले वेबसाइटों के लिए पूरी तरह से विनाशकारी हो सकते हैं, और जब SQL डेटाबेस प्रबंधन और सामान्य रूप से कोड सुरक्षा की बात आती है तो उनकी रोकथाम अत्यधिक महत्व रखती है।

SQL इंजेक्शन हमलों को रोकना

यहां कुछ बेहतरीन SQL इंजेक्शन रोकथाम तकनीकें दी गई हैं जो आपकी वेबसाइट की संपूर्ण सुरक्षा सुनिश्चित कर सकती हैं।

<एच3>1. पैरामीट्रिज़िंग क्वेरीज़

कोड सुरक्षा सुनिश्चित करने के लिए पहला कदम डेटाबेस को भेजे जाने वाले प्रश्नों को पैरामीट्रिज करना है। मूल अवधारणा एसक्यूएल में कोड की एक पंक्ति को पूर्व-संकलित करना है, जिसके लिए आप बाद में आवश्यक मापदंडों की आपूर्ति करेंगे जिन्हें इसे निष्पादित करने की आवश्यकता है।

यह कोडिंग तकनीक उपयोगकर्ता द्वारा उत्पन्न इनपुट को स्वचालित रूप से उद्धृत करने के लिए बनाती है, जिससे इरादे में बदलाव करना असंभव हो जाता है। जैसा कि आप बता सकते हैं, SQL डेटाबेस के साथ किसी भी वेबसाइट को सुरक्षित करने के लिए पैरामीटरयुक्त क्वेरीज़ सबसे महत्वपूर्ण हैं।

अब जब हमने पैरामीटरयुक्त प्रश्नों की मूल अवधारणा को कवर कर लिया है, तो आइए देखें कि आप इसे अपनी वेबसाइट पर कैसे लागू कर सकते हैं। पहला विकल्प MySQLi एक्सटेंशन का उपयोग करना है। यह विधि उपयोगकर्ता को तैयार बयान या पैरामीटरयुक्त प्रश्न बनाने की अनुमति देती है और उन्हें दो चरणों में निष्पादित करती है।

"तैयार चरण" में, स्टेटमेंट का एक टेम्प्लेट डेटाबेस को भेजा जाता है। डेटाबेस सर्वर तब प्राप्त टेम्पलेट के सिंटैक्स की जांच करता है और आंतरिक संसाधनों को आगे बढ़ाता है जिनका उपयोग बाद में किया जाना है।

"निष्पादन चरण" में क्लाइंट पैरामीटर मानों को बाध्य करता है और उन्हें डेटाबेस सर्वर पर भेजता है। पहले से तैयार आंतरिक संसाधनों के संयोजन के साथ बाउंड पैरामीटर मानों का उपयोग करके कथन को अंत में निष्पादित किया जाता है।

एक अन्य विकल्प जिसे आप MySQLi के बजाय चुन सकते हैं, वह है PHP डेटा ऑब्जेक्ट (PHP 5.1 के माध्यम से संभव)। PHP डेटा ऑब्जेक्ट, या पीडीओ, उन विधियों का उपयोग करता है जो अनिवार्य रूप से पैरामीटरयुक्त प्रश्नों की अवधारणा को सरल बनाते हैं। इसके अलावा, चूंकि यह केवल MySQL के बजाय कई डेटाबेस का उपयोग करता है, इसलिए आपका कोड अधिक पोर्टेबल और पढ़ने में आसान हो जाता है।

<एच3>2. संग्रहित प्रक्रियाओं का उपयोग करना

कोड सुरक्षा बढ़ाने के तरीकों की हमारी सूची में अगला संग्रहीत कार्यविधियाँ हैं। डेवलपर्स बाद में उपयोग के लिए संग्रहीत प्रक्रियाओं के रूप में कोड लिखकर अपने कोड को अनुकूलित कर सकते हैं। एक प्रक्रिया मूल रूप से कोड की एक तार्किक इकाई होती है जिसमें कई कथन होते हैं जिन्हें एक के बाद एक निष्पादित किया जाता है।

इस पद्धति के माध्यम से, एक निष्पादन योजना बनाई जा सकती है। इसके अलावा, एक प्रक्रिया में बयानों का बाद में निष्पादन सुनिश्चित करता है कि वे स्वचालित रूप से पैरामीट्रिज्ड हैं। संग्रहीत कार्यविधियाँ आपको किसी क्वेरी को कई बार लिखने की बजाय जब भी आप निष्पादित करना चाहें, तो उन्हें कॉल करने की अनुमति देती हैं।

संग्रहीत प्रक्रियाएं किसी के कोड को अनुकूलित करती हैं और कार्यक्रम की सुरक्षा और समग्र दक्षता में वृद्धि करती हैं। उन्हें सामान्य रूप से एक अच्छा प्रोग्रामिंग अभ्यास माना जाता है और ये केवल SQL इंजेक्शन हमलों से सुरक्षा तक सीमित नहीं हैं।

<एच3>3. इनपुट सत्यापन

इनपुट सत्यापन यह सत्यापित करने के इर्द-गिर्द घूमता है कि उपयोगकर्ता द्वारा दर्ज किया गया इनपुट वैध है या नहीं। सत्यापन प्रक्रिया इनपुट के प्रकार (पूर्णांक, वर्ण, तार, आदि), प्रारूप, लंबाई और बहुत कुछ की जांच करती है।

इस तरह, डेटाबेस सर्वर को भेजी जाने वाली क्वेरी को पहले जांचा जाता है कि यह सत्यापन मानदंड पर खरी उतरती है या नहीं। इनपुट सत्यापन का उपयोग करके, डेवलपर्स यह सुनिश्चित कर सकते हैं कि इनपुट में कोई कमांड नहीं डाला गया है। यह तकनीक हर तरह की चालाकी को दूर करती है, और हैकर्स अपने इनपुट के माध्यम से किसी भी संभावित खामियों का फायदा उठाने में असमर्थ होते हैं।

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

<एच3>4. व्यवस्थापकीय विशेषाधिकार निरस्त करना

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

एसक्यूएल इंजेक्शन को रोकने के लिए कम से कम विशेषाधिकार प्राप्त विकल्प के लिए जाना सबसे अच्छा अभ्यास है। इसलिए, आपको उपयोगकर्ता अधिकारों और विशेषाधिकारों को उचित रूप से सेट करना होगा।

निष्कर्ष में

इस लेख में, हमने SQL इंजेक्शन हमलों और उनके परिणामों की व्याख्या करने की कोशिश की। हमने उन चार सबसे महत्वपूर्ण निवारक उपायों को भी शामिल करने का प्रयास किया है जिनका उपयोग आप अपने और अपने आवेदन को सभी प्रकार की कमजोरियों और हमलों से बचाने के लिए कर सकते हैं। ये उपाय न केवल SQL इंजेक्शन की रोकथाम सुनिश्चित करते हैं बल्कि सामान्य रूप से कोड सुरक्षा भी सुनिश्चित करते हैं। तो, उन्हें अपनी विकास प्रक्रिया का हिस्सा ज़रूर बनाएं!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में परिणाम सेट की स्कीमा प्राप्त करने के 3 तरीके

  2. रैंड () SQL सर्वर में उदाहरण

  3. SQL सर्वर में डेटाबेस में सभी CHECK और विदेशी कुंजी बाधाओं को कैसे सक्षम करें (T-SQL उदाहरण)

  4. SQL सर्वर 2012 OPENROWSET त्रुटि का उपयोग करके एक्सेस 2007 डेटा को क्वेरी कर रहा है

  5. SSRS रिपोर्ट परिभाषा सर्वर से नई है