Cyber Security Academy · पाठ

SQL इंजेक्शन से बचाव

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

पाठ 1, कुल 4 में से13 चरण

SQL इंजेक्शन से बचाव, CoddyKit पर Cyber Security Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Cyber Security Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Cyber Security Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

एसक्यूएल इंजेक्शन क्या है

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

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

एक असुरक्षित क्वेरी

क्लासिक गलती स्ट्रिंग जोड़ना है। यदि प्रविष्टि tom है, तो क्वेरी ठीक रहती है, लेकिन तैयार की गई प्रविष्टि तर्क को फिर से लिख देती है।

  • एकल उद्धरण चिह्न स्ट्रिंग को समय से पहले बंद कर देता है।
  • उसके बाद का सब कुछ निष्पादित होने वाला एसक्यूएल बन जाता है।
query = "SELECT * FROM users WHERE name = '" + userInput + "'";
// userInput = tom' OR '1'='1
// becomes: SELECT * FROM users WHERE name = 'tom' OR '1'='1'

प्रमाणीकरण को दरकिनार करना

लॉगिन फ़ॉर्म मुख्य लक्ष्यों में होते हैं। हमेशा सत्य रहने वाली शर्त डालकर और बाकी हिस्से को टिप्पणी बनाकर निष्क्रिय करके हमलावर पासवर्ड के बिना लॉगिन कर लेता है।

-- क्रम शेष खंड को टिप्पणी बना देता है, इसलिए पासवर्ड की जाँच अनदेखी हो जाती है।

-- attacker enters in the username field:
admin' --
-- resulting query:
SELECT * FROM users WHERE user = 'admin' --' AND pass = '...'

पैरामीटरयुक्त क्वेरियाँ

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

डेटाबेस ड्राइवर ? स्थानधारकों को दिए गए मानों से सुरक्षित रूप से बाँधता है।

-- Python (sqlite3 / psycopg)
cur.execute(
  'SELECT * FROM users WHERE name = ? AND pass = ?',
  (username, password)
)

Java में तैयार कथन

हर प्रमुख प्रोग्रामिंग भाषा पैरामीटर का उपयोग उपलब्ध कराती है। Java में Statement के साथ स्ट्रिंग बनाने के बजाय PreparedStatement का उपयोग करें।

बाँधे गए पैरामीटर अपने स्थान से बाहर नहीं निकल सकते, इसलिए यहाँ संरचनात्मक रूप से इंजेक्शन असंभव है।

PreparedStatement ps = conn.prepareStatement(
  "SELECT * FROM users WHERE name = ?");
ps.setString(1, userInput);
ResultSet rs = ps.executeQuery();

संग्रहीत प्रक्रियाएँ

संग्रहीत प्रक्रियाएँ तब सहायता कर सकती हैं जब वे आंतरिक रूप से पैरामीटरयुक्त प्रविष्टियों का उपयोग करें। लेकिन सावधान रहें: स्ट्रिंग जोड़कर गतिशील एसक्यूएल बनाने वाली संग्रहीत प्रक्रिया उतनी ही असुरक्षित होती है।

  • सुरक्षित: प्रक्रिया को दिए गए पैरामीटर।
  • असुरक्षित: प्रक्रिया के भीतर जोड़ी गई स्ट्रिंग पर EXEC() चलाना।

प्रविष्टि सत्यापन और अनुमति-सूची

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

उदाहरण के लिए, अंकीय ID फ़ील्ड को क्वेरी तक पहुँचने से पहले उन सभी चीज़ों को अस्वीकार कर देना चाहिए जो अंक नहीं हैं।

if not user_id.isdigit():
    raise ValueError('invalid id')
# only then use the value

एस्केप करना अंतिम उपाय है

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

पैरामीटरयुक्त क्वेरियों को प्राथमिकता दें। एस्केपिंग का उपयोग केवल तब करें जब कोई ORM या ड्राइवर किसी विशेष पहचानकर्ता के लिए पैरामीटर का उपयोग न कर सके।

डेटाबेस खातों के लिए न्यूनतम विशेषाधिकार

ऐसे किसी भी सफल इंजेक्शन से होने वाले नुकसान को सीमित करें, जो ऐप्लिकेशन के डेटाबेस उपयोगकर्ता पर न्यूनतम विशेषाधिकार लागू करके हो सकता है।

  • आवश्यक तालिकाओं पर केवल SELECT, INSERT, UPDATE दें।
  • ऐप्लिकेशन के लिए कभी भी सर्वोच्च-उपयोगकर्ता/root खाते का उपयोग न करें।
  • DROP, FILE और प्रशासनिक अधिकार अस्वीकार करें।
GRANT SELECT, INSERT, UPDATE ON appdb.orders TO 'webapp'@'%';
REVOKE DROP, ALTER ON appdb.* FROM 'webapp'@'%';

ORM और क्वेरी निर्माता

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

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

स्तरित सुरक्षा

कोई एक नियंत्रण पर्याप्त नहीं है। कई परतों को मिलाएँ:

  • हर जगह पैरामीटरयुक्त क्वेरियाँ (मुख्य सुरक्षा)।
  • प्रविष्टि सत्यापन और अनुमति-सूची।
  • न्यूनतम-विशेषाधिकार वाले डेटाबेस खाते।
  • ज्ञात प्रारूपों को पकड़ने के लिए वेब अनुप्रयोग फ़ायरवॉल (WAF)।
  • ऐसी त्रुटि-प्रबंधन व्यवस्था जो कभी एसक्यूएल या स्टैक ट्रेस लीक न करे।

त्वरित जाँच

मुख्य बचाव के बारे में अपनी समझ जाँचें।

पुनरावलोकन

आपने सीखा कि एसक्यूएल इंजेक्शन कैसे काम करता है और इसे कैसे रोका जाए:

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

स्तरित सुरक्षा किसी एक गलती को सुरक्षा-भंग बनने से रोकती है।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Cyber Security Academy सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
76
पाठ
303

अक्सर पूछे जाने वाले प्रश्न

क्या “SQL इंजेक्शन से बचाव” पाठ निःशुल्क है?

हाँ — Cyber Security Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “SQL इंजेक्शन से बचाव” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Cyber Security Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“SQL इंजेक्शन से बचाव” में मैं क्या सीखूँगा?

इंजेक्शन हमलों को रोकें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Cyber Security Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Cyber Security Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Cyber Security Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“SQL इंजेक्शन से बचाव” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Cyber Security Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Cyber Security Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. SQL इंजेक्शन से बचाव
  2. पहुँच नियंत्रण और कूटलेखन
  3. लेखापरीक्षण और निगरानी
  4. बैकअप और पुनर्प्राप्ति सुरक्षा
← Cyber Security Academy पर वापस जाएँ