SQL Injection क्या है? - What is SQL Injection in Hindi 

  • SQL Injection, hackers द्वारा उपयोग किया जाने वाला method है जो website के input fields के द्वारा डेटाबेस पर आक्रमण करता है।
  • यह उस समय होता है जब एक व्यक्ति form या search box में सामान्य text के बजाए हानिकारक SQL commands, type करता है।
  • यदि website सही ढंग से इनपुट की जांच नहीं करता, तब database हानिकारक command को रन करता है। 
  • यह hacker को महत्वपूर्ण data को देखने बदलने या हटाने की अनुमति देता है। 
  • कभी-कभी वे बिना password को जाने admin के समान log in करते हैं। 
  • Websites जो SQL databases जैसे MySQL या SQL Server का उपयोग करती है वे खतरे में होती है। 
  • यदि इनपुट की सही जांच न की जाए तो Hackers, उस पर आक्रमण कर सकते हैं।
  • इसे रोकने के लिए सुरक्षित स्टेटमेंट का उपयोग करना और उपयोग करने के पहले हमेशा यूजर की इनपुट की जांच करते रहना चाहिए। 
  • यह डेटाबेस को सुरक्षित बनाए रखना है।

 
SQL Injection in Hindi

Types of SQL Injection in Hindi - SQL Injection के प्रकार

SQL Injection के प्रकार के निम्न प्रकार होते है।

Union-Based SQL Injection

  • यह method, SQL UNION operator का उपयोग करता है।.
  • Hackers, अपने query को original query के साथ मिलाने का प्रयास करता है।
  • यह अन्य tables से छुपे हुए data को देखने की अनुमति देता है।
  • output को सीधे ही वेबसाइट पर दिखाया जाता है। 

Example:
SELECT name FROM users WHERE id = '1' UNION SELECT password FROM admin;

यदि साइट सुरक्षित नहीं किया गया है तो यह result मे दोनों user का name और admin की password एक साथ दिखा सकता है।

अतः Union-Based SQL Injection इस प्रकार से कार्य करता है।

 

Error-Based SQL Injection

  • Hackers अपने लक्ष्य को पाने के लिए जानबूझकर गलत या खराब SQL query डालते हैं। 
  • यह method database को एक error दिखाने के लिए दबाव डालता है। 
  • यह error message, table names, column names, या अन्य database details को दिखा सकता है।
  • यह error Hackers को डेटाबेस के बारे में सीखने में मदद करता है।

Example:
' OR 1=1 ORDER BY 100--
यदि टेबल में 100 columns नहीं है, तब Site निम्न प्रकार से एक error दिखा सकता है। जैसे 

Unknown column '100' in 'order clause'

यह एरर बताएगा कि table में column ,100 से कम है।


Blind SQL Injection

  • Blind SQL Injection उस समय होता है जब एक वेबसाइट SQL injection के लिए कमजोर होता है परंतु यहां कोई एरर या डाटा स्क्रीन पर नहीं दिखाता। 
  • hacker, सीधे ही रिजल्ट को नहीं देख सकता।
  • hacker, true या false queries भेजता है और वेबसाइट के व्यवहार की निगरानी करता है।
  • यदि पेज बदलता है धीरे से लोड होता है या विभिन्न मैसेज दिखता है तब हैकर कुछ समझ जाता है।
  • इस तरीके से हैकर छुपे हुए डाटा जैसे usernames या passwords, को ढूंढता है।

Example:
' OR 1=1 -- // Always true – login may succeed
' OR 1=2 -- // Always false – login may fail

hacker इसका उपयोग यह जांच करने के लिए करता है की क्या SQL Injection कार्य करेगा या नहीं।

यदि page अलग दिखाई देता है या कार्य करता है हैकर जान लेता है कि उसका Attack कार्य कर रहा है भले ही कोई एरर या डाटा दिखाया न जाए।

यह मुख्यतः दो प्रकार के होते हैं।

Boolean-Based Blind SQL Injection

इसमें true या false, answers के साथ questions का उपयोग करते हैं। Hacker यह जांच करते हैं कि कैसे page व्यवहार करता है। 

Time-Based Blind SQL Injection

यह website को 5 seconds के लिए pause करने के लिए `SLEEP(5)` command का उपयोग करते हैं। यह hacker को दिखाता है कि उसका attack कार्य कर रहा है।

यदि page load होने मे अधिक समय लगता है तब hacker जान लेता है कि query, सफलतापूर्वक चली है।  

यह blind इसलिए कहलाता है क्योंकि हैकर डाटा को नहीं देखता लेकिन फिर भी वेबसाइट की प्रतिक्रिया देखकर hacker इसे महसूस या अनुमान लगा सकते हैं। 


SQL Injection के खतरे- Risks of SQL Injection in Hindi 

SQL Injection के निम्न खतरे है।
1. Hackers, बिना username या password के log in कर सकते हैं।

2. Hackers, संवेदनशील डाटा जैसे names, emails, passwords, या credit card info की चोरी कर सकती है।

3. Hackers महत्वपूर्ण डाटा को बदल या हटा सकते हैं।

4. Hackers, admin accounts पर नियंत्रण कर सकते हैं। 

5. Hackers, website में दिखाई जा रहे content को बदल सकते हैं।

6. कुछ cases में हैकर पूरे सर्वर पर भी नियंत्रण कर सकते हैं। 

7. छुपे हुए डेटाबेस की विवरण जैसे table names उजागर किया जा सकता है।

8. attack के बाद Users वेबसाइट पर विश्वास करना या उपयोग करना छोड़ सकते हैं।


SQL Injection से कैसे बचें?

SQL Injection से निम्न प्रकार से बचा जा सकता है। 
  • SQL code और user input को अलग रखने के लिए prepared statements का उपयोग करें।
  • user input पर विश्वास न रखें हमेशा इसकी जांच करें और इसे clean कर दे।
  • database actions को सुरक्षित ढंग से नियंत्रित करने के लिए stored procedures का उपयोग करें।
  • database users को सीमित अनुमति दे।
  • आपके web framework द्वारा प्रदान किए जा रहे सिक्योरिटी फीचर्स का उपयोग करें।
  • user input का उपयोग करके सीधे SQL queries का निर्माण करने से बचे।
  • अपने database और server software को update रखे 
  • हानिकारक रिक्वेस्ट को ब्लॉक करने के लिए Web Application Firewall (WAF) का उपयोग करें।


Web Applications में SQL Injection की जांच


1) SQL Injection का मतलब database से छेड़छाड़ करने के लिए input fields मे हानिकारक SQL code को डालना होता है।

2) web application में SQL Injection, है या नहीं इसकी जांच करने के लिए `' OR '1'='1` को एक text field (जैसे login box) में enter करे।
  •  यदि यह log in हो जाता है या अतिरिक्त डेटा दिखता है इसका मतलब है कि इसमें SQL Injection संभव है।
3)  input में केवल एक single quote जैसे `'` या double quote जैसे `"` enter करे।
  • यदि यह SQL error (जैसे "syntax error" या "unexpected token"), दिखाता है इसका मतलब है input सुरक्षित नहीं है। 
4)  `'; DROP TABLE users; --` input का उपयोग करें। यह खतरनाक है इसलिए इसका उपयोग केवल test systems में करें। यदि टेबल डिलीट हो जाता है तब app असुरक्षित है।

5) विभिन्न security tools जैसे sqlmap, Burp Suite, या OWASP ZAP का उपयोग करे। ये tools यह जांचने के लिए अलग-अलग इनपुट भेजते हैं कि SQL Injection काम करता है या नहीं।
 
6) देखें कि एप्लिकेशन असामान्य
Input पर कैसे response करता है।
यदि इसमें database messages या errors दिखाता है तब इसमें जोखिम हो सकता है।