Using prepared statements to prevent SQL injection In Hindi

Using prepared statements to prevent SQL injection In Hindi

एसक्यूएल डेटाबेस मैनेजमेंट सिस्टम में एसक्यूएल इंजेक्शन ऑनलाइन वेब बेस्ड एप्लिकेशन में सबसे बेसिक और डेंजरस सिस्टम सिक्योरिटी वल्नरेबिलिटी में से एक पोटेंशियल थ्रेट है। एसक्यूएल इंजेक्शन डेटाबेस में तब परफॉर्म होता है. जब कोई मालिसियस यूजर हैकर अटैकर यूज़र इनपुट जैसे लॉगिन फ़ॉर्म या सर्च फ़ील्ड में मैलिशियस एसक्यूएल ​​डेटाबेस कोड इन्सर्ट या इंटेंशनली इंजेक्ट करता है. जिसे बाद में डेटाबेस एग्जीक्यूट करता है। इससे मौजूदा डेटाबेस में सिक्योर्ड क्रेडेंशियल अनऑथराइज़्ड यूजर डाटा एक्सेस, डेटा थेफ़्ट, या मौजूदा डेटाबेस का कम्पलीट डिस्ट्रक्शन या डिलीट भी कर दिया जाता है।

Using prepared statements to prevent SQL injection In Hindi

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

What is SQL injection in a SQL database?

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

Example of vulnerable code in a SQL database.

<?php

$id = $_GET[‘id’];

$sql = “SELECT * FROM employee WHERE id = $id”;

$result = mysqli_query($conn, $sql);

?>

Here If a user employee.

1 OR 1=1

Then the database query becomes.

SELECT * FROM employee WHERE id = 1 OR 1=1;

This will return all records, and bypassing the existing database security.

What are prepared statements in a SQL database?

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

main concept of prepared statements.

  • यूजर डिफाइन एसक्यूएल डेटाबेस का स्ट्रक्चर फिक्स्ड नेचर का होता है
  • प्रिपेयर्ड स्टेटमेंट डेटाबेस में यूज़र इनपुट को सिक्योर प्रोटेक्टेड आर्डर में मैनेज या हैंडल करते है
  • किसी प्रिपेयर्ड स्टेटमेंट में इंजेक्टेड डेटाबेस कोड के क्वेरी को मॉडिफाई या आल्टर करने  का कोई वेलिडेशन नहीं है

How prepared statements work in database software.

  • प्रिपेयर्ड स्टेटमेंट सिस्टम डिफाइन प्लेसहोल्डर्स (?) के साथ एसक्यूएल क्वेरी को प्रिपेयर्ड करता है.
  • प्रिपेयर्ड स्टेटमेंट यूज़र इनपुट को प्लेसहोल्डर्स से बाइंड करता है.
  • अंत में डेटाबेस क्वेरी को एग्जीक्यूट भी करता है.

Example of using MySQLi in a prepared statement on SQL database.

<?php

$conn = mysqli_connect(“localhost”, “root”, “”, “sample_db”);

if (!$conn) {

    die(“Database Connection establishment is failed – ” . mysqli_connect_error());

}

$id = $_GET[‘id’];

// We use here Prepare statement concept

$stmt = mysqli_prepare($conn, “SELECT * FROM employee WHERE id = ?”);

// here it Bind the parameter (i = integer)

mysqli_stmt_bind_param($stmt, “i”, $id);

// here it Execute the statement

mysqli_stmt_execute($stmt);

// now we can Get result

$result = mysqli_stmt_get_result($stmt);

// finally it Fetch the data

while ($row = mysqli_fetch_assoc($result)) {

    echo $row[’emp_name’] . “<br>”;

}

mysqli_close($conn);

?>

Example of PDO usage in prepared statement.

<?php

try {

    $conn = new PDO(“mysql:host=localhost;dbname= sample_db”, “root”, “”);

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $id = $_GET[‘id’];

    $stmt = $conn->prepare(“SELECT * FROM employee WHERE id = :id”);

    $stmt->bindParam(‘:id’, $id, PDO::PARAM_INT);

    $stmt->execute();

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

        echo $row[’emp_name’] . “<br>”;

    }

} catch(PDOException $e) {

    echo “Display Databse connection establishment Error – ” . $e->getMessage();

}

?>

Why and how prepared statements prevent SQL injection in SQL databases.

  • प्रिपेयर्ड स्टेटमेंट से यूज़र इनपुट को कभी भी डायरेक्ट एसक्यूएल डेटाबेस क्वेरी में ऐड नहीं किया जाता है
  • प्रिपेयर्ड स्टेटमेंट में इनपुट को प्लेन डेटा के रूप में ट्रीट किया जाता है
  • प्रिपेयर्ड स्टेटमेंट के यूज़ से डेटाबेस में स्पेशल कैरेक्टर जैसे ‘, –, ; अपने रियल मीनिंग को फॉरगेट कर देते हैं
  • प्रिपेयर्ड स्टेटमेंट मौजूदा डेटाबेस कोड और उसके वैल्यू के बीच डिफ्रेंस करता है

Advantages of prepared statements in SQL databases.

  • Best security – प्रिपेयर्ड स्टेटमेंट मौजूदा डेटाबेस में एसक्यूएल इंजेक्शन से सिस्टम डेटाबेस को प्रोटेक्ट करता है.
  • System performance – प्रिपेयर्ड स्टेटमेंट में डेटाबेस क्वेरी को एक बार कम्पाइल करने के बाद दोबारा यूज़ किया जा सकता है.
  • Reliable concept – प्रिपेयर्ड स्टेटमेंट डेटाबेस में सिंटैक्स की मिस्टेक्स को कम करता है
  • Easy maintenance – प्रिपेयर्ड स्टेटमेंट डेटाबेस में यूजर को क्लियर और मोर इजी आर्डर में रीड किया जा सकने वाला डेटाबेस कोड क्रिएट करने में हेल्प करता है.

Best practices for prepared statements in SQL databases.

  • एसक्यूएल डेटाबेस में प्रिपेयर्ड स्टेटमेंट के माध्यम से यूज़र इनपुट के लिए हमेशा प्रिपेयर्ड स्टेटमेंट मेथड को यूज़ करें।
  • किसी डेटाबेस में जहाँ एसेंशियल हो, वहा डेटाबेस इनपुट को वैलिडेट और प्रॉपर सैनिटाइज़ करें।
  • डेटाबेस में पैरामीटर एलिमेंट को बाइंड करते समय सही डेटा टाइप का यूज़ करें।
  • डेटाबेस यूज़र को मौजूदा डेटाबेस में किसी भी प्रकार के एरर को डिस्प्ले करने से बचें।
  • डेटाबेस कनेक्टिविटी फ्लेक्सिबिलिटी और डेटाबेस इंडिपेंडेंस यूज़ के लिए PDO डेटाबेस कनेक्शन मेथड को प्रायोरिटी प्रोवाइड करे.

Conclusion on Using Prepared Statements to Prevent SQL Injection.

PHP वेब डेवलपमेंट में सिक्योर और फ़ास्ट डेटाबेस इंटरैक्शन के लिए प्रिपेयर्ड स्टेटमेंट एक एसेंशियल टूल या फीचर्स हैं। जहा प्रिपेयर्ड स्टेटमेंट एसक्यूएल डेटाबेस क्वेरी को यूज़र इनपुट से सेपरेट करके, ये सिस्टम में होने वाले किसी भी प्रकार के एसक्यूएल इंजेक्शन अटैक थ्रेट को एफ्फेक्टिवेली आर्डर में स्टॉप करते हैं। जिसमे डेटाबेस यूजर MySQLi या PDO डेटाबेस कनेक्शन का यूज़ करे, डेटाबेस सिक्योरिटी में प्रिपेयर्ड स्टेटमेंट कांसेप्ट को फॉलो या अडॉप्ट करना एक बेस्ट प्रैक्टिस है. जो किसी डेटाबेस में यह फिक्स करता है कि डेटाबेस यूजर के लिए वेब एप्लिकेशन सिक्योर, फ़ास्ट, एफ्फिसिएंट, और प्रोफेशनल बनी रहें।

Leave a Reply