PHP में SQL इंजेक्शन को कैसे रोकें (चित्रों के साथ)

विषयसूची:

PHP में SQL इंजेक्शन को कैसे रोकें (चित्रों के साथ)
PHP में SQL इंजेक्शन को कैसे रोकें (चित्रों के साथ)

वीडियो: PHP में SQL इंजेक्शन को कैसे रोकें (चित्रों के साथ)

वीडियो: PHP में SQL इंजेक्शन को कैसे रोकें (चित्रों के साथ)
वीडियो: 12 तरीके अपने पेरेंट्स से कैंडी छिपाने के ! 2024, मई
Anonim

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

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

कदम

भाग 1 का 2: SQL इंजेक्शन को समझना

चरण 1. SQL इंजेक्शन SQL डेटाबेस का उपयोग करने वाले अनुप्रयोगों में एक प्रकार की भेद्यता है।

जब SQL कथन में उपयोगकर्ता इनपुट का उपयोग किया जाता है तो भेद्यता उत्पन्न होती है:

$नाम = $_GET['उपयोगकर्ता नाम']; $query = "tbl_user से पासवर्ड चुनें जहां नाम = '$name'";

चरण २। उपयोगकर्ता द्वारा URL चर उपयोगकर्ता नाम में दर्ज किया गया मान वैरिएबल $name को असाइन किया जाएगा।

इसके बाद इसे सीधे SQL कथन में रखा जाता है, जिससे उपयोगकर्ता के लिए SQL कथन को संपादित करना संभव हो जाता है।

$name = "व्यवस्थापक' या 1=1 -- "; $query = "tbl_user से पासवर्ड चुनें जहां नाम = '$name'";

चरण 3. SQL डेटाबेस को तब SQL कथन निम्नानुसार प्राप्त होगा:

Tbl_users से पासवर्ड चुनें जहां नाम = 'व्यवस्थापक' या 1 = 1 -- '

  • यह मान्य SQL है, लेकिन उपयोगकर्ता के लिए एक पासवर्ड वापस करने के बजाय, कथन तालिका में सभी पासवर्ड लौटाएगा tbl_user । यह ऐसा कुछ नहीं है जिसे आप अपने वेब अनुप्रयोगों में चाहते हैं।

    भाग २ का २: तैयार विवरण बनाने के लिए mySQLi का उपयोग करना

    2542820 1
    2542820 1

    चरण 1. mySQLi चयन क्वेरी बनाएँ।

    mySQLi तैयार विवरण का उपयोग करके तालिका से डेटा का चयन करने के लिए नीचे दिए गए कोड का उपयोग करें।

    $नाम = $_GET['उपयोगकर्ता नाम']; अगर ($stmt = $mysqli->prepare ("tbl_users से पासवर्ड चुनें जहां नाम =?")) {// एक चर को एक स्ट्रिंग के रूप में पैरामीटर से बांधें। $stmt->bind_param("s", $name); // कथन निष्पादित करें। $ stmt-> निष्पादित (); // क्वेरी से चर प्राप्त करें। $stmt->bind_result($pass); // डेटा प्राप्त करें। $stmt->लाओ (); // डेटा प्रदर्शित करें। प्रिंटफ ("उपयोगकर्ता% s के लिए पासवर्ड% s / n है", $ नाम, $ पास); // तैयार स्टेटमेंट को बंद करें। $ एसटीएमटी-> बंद करें (); }

    नोट: चर $mysqli mySQLi कनेक्शन ऑब्जेक्ट है।

    2542820 2
    2542820 2

    चरण 2. mySQLi INSERT क्वेरी बनाएँ।

    mySQLi तैयार विवरण का उपयोग करके तालिका में डेटा सम्मिलित करने के लिए नीचे दिए गए कोड का उपयोग करें।

    $नाम = $_GET['उपयोगकर्ता नाम']; $पासवर्ड = $_GET['पासवर्ड']; if ($stmt = $mysqli->prepare("INSERT INTO tbl_users (name, password) VALUES (?, ?)")) {// वेरिएबल को स्ट्रिंग्स के रूप में पैरामीटर से बाइंड करें। $stmt->bind_param("ss", $name, $password); // कथन निष्पादित करें। $ stmt-> निष्पादित (); // तैयार स्टेटमेंट को बंद करें। $ एसटीएमटी-> बंद करें (); }

    नोट: चर $mysqli mySQLi कनेक्शन ऑब्जेक्ट है।

    2542820 3
    2542820 3

    चरण 3. mySQLi अद्यतन क्वेरी बनाएँ।

    mySQLi तैयार विवरण का उपयोग करके तालिका में डेटा अद्यतन करने के लिए नीचे दिए गए कोड का उपयोग करें।

    $नाम = $_GET['उपयोगकर्ता नाम']; $पासवर्ड = $_GET['पासवर्ड']; if ($stmt = $mysqli->prepare("update tbl_users SET password = ? WHERE name =?")) {// वेरिएबल्स को स्ट्रिंग्स के रूप में पैरामीटर से बाइंड करें। $stmt->bind_param("ss", $password, $name); // कथन निष्पादित करें। $ stmt-> निष्पादित (); // तैयार स्टेटमेंट को बंद करें। $ एसटीएमटी-> बंद करें (); }

    नोट: चर $mysqli mySQLi कनेक्शन ऑब्जेक्ट है।

    2542820 4
    2542820 4

    चरण 4. mySQLi DELETE क्वेरी बनाएं।

    नीचे दी गई स्क्रिप्ट है कि mySQLi तैयार स्टेटमेंट का उपयोग करके किसी तालिका से डेटा कैसे हटाएं।

    $नाम = $_GET['उपयोगकर्ता नाम']; $पासवर्ड = $_GET['पासवर्ड']; अगर ($stmt = $mysqli->prepare ("tbl_users से हटाएं जहां नाम =?")) {// चर को एक स्ट्रिंग के रूप में पैरामीटर से बांधें। $stmt->bind_param("s", $name); // कथन निष्पादित करें। $ stmt-> निष्पादित (); // तैयार स्टेटमेंट को बंद करें। $ एसटीएमटी-> बंद करें (); }

सिफारिश की: