ekterya.com

कैसे PHP में एक एसक्यूएल इंजेक्शन से बचने के लिए

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

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

चरणों

भाग 1
समझे कि एसक्यूएल इंजेक्शन क्या है

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

Video: Python Web Apps with Flask by Ezra Zigmond

$ name = $ _GET [`उपयोगकर्ता नाम`] - $ query = "Tbl_user नाम का नाम चुनें = `$ name` "-
  • 2
    यूआरएल वैरिएबल में जो उपयोगकर्ता प्रवेश करता है उपयोगकर्ता नाम चर को असाइन किया गया है $ नाम. फिर इसे एसक्यूएल स्टेटमेंट में सीधे रखा जाता है जिससे उपयोगकर्ता को एसक्यूएल स्टेटमेंट को संपादित करने की संभावना है।
    $ नाम = "व्यवस्थापक `या 1 = 1 - "- $ query = "Tbl_user नाम का नाम चुनें = `$ name` "-
  • 3
    एक परिणाम के रूप में, SQL डेटाबेस निम्न SQL कथन प्राप्त करेगा:
    Tbl_users से पासवर्ड का चयन करें जहां नाम = `व्यवस्थापक` या 1 = 1 - `
  • यह एक मान्य SQL कथन है, लेकिन उपयोगकर्ता के लिए पासवर्ड लौटने के बजाय, बयान तालिका में सभी पासवर्ड लौटाता है tbl_user। आपके वेब एप्लिकेशन में कोई भी ऐसा नहीं करना चाहता है
  • भाग 2
    तैयार कथनों को बनाने के लिए mySQLi का उपयोग करें

    छवि शीर्षक 2542820 1
    1



    MySQLi के साथ एक चयन क्वेरी बनाएँ
    MySQLi के साथ तैयार किए गए एक बयान का उपयोग करके एक तालिका से (SELECT) डेटा का चयन करने के लिए नीचे दिए गए कोड का उपयोग करें

    $ name = $ _GET [`उपयोगकर्ता नाम`] - यदि ($ stmt = $ mysqli->तैयारी ("Tbl_users से चयन करें शब्द कहाँ नाम =?")) {// स्ट्रिंग के रूप में पैरामीटर के साथ एक चर में शामिल करें $ stmt->बाँध_परम ("रों", $ नाम) - // वाक्य को निष्पादित करें $ stmt->execute () - // क्वेरी के चर प्राप्त करें $ stmt->bind_result ($ pass) - // डेटा प्राप्त करें $ stmt->फ़ेच () - // डाटप्रिंटफ प्रदर्शित करता है ("उपयोगकर्ता का पासवर्ड% s है% s n", $ नाम, $ पास) - // तैयार बयान $ stmt->बंद () -}


    • नोट: चर $ mysqli mySQLi का कनेक्शन ऑब्जेक्ट है
  • छवि शीर्षक 2542820 2

    Video: Review: Quiz 1

    2
    MySQLi के साथ एक INSERT क्वेरी बनाएँ MySQLi के साथ तैयार किए गए बयानों का उपयोग करके एक डेटा में डेटा (INSERT) को सम्मिलित करने के लिए नीचे दिए गए कोड का उपयोग करें

    $ नाम = $ _GET [`उपयोगकर्ता नाम`] - $ पासवर्ड = $ _GET [`पासवर्ड`] - यदि ($ stmt = $ mysqli->तैयारी ("Tbl_users (नाम, पासवर्ड) मूल्यों में शामिल करें (?,?)")) {// स्ट्रिंग के रूप में पैरामीटर के लिए चर को लिंक करें $ stmt->बाँध_परम ("एस एस", $ नाम, $ पासवर्ड) - // वाक्य $ stmt->निष्पादित करें () - // तैयार बयान $ stmt->बंद () -}


  • नोट: चर $ mysqli mySQLi का कनेक्शन ऑब्जेक्ट है
  • छवि शीर्षक 2542820 3
    3
    MySQLi के साथ एक अद्यतन क्वेरी बनाएँ MySQLi के साथ तैयार बयानों का उपयोग करके किसी तालिका के डेटा (अपडेट) को अपडेट करने के लिए नीचे दिए गए कोड का उपयोग करें

    Video: Week 10, continued

    $ नाम = $ _GET [`उपयोगकर्ता नाम`] - $ पासवर्ड = $ _GET [`पासवर्ड`] - यदि ($ stmt = $ mysqli->तैयारी ("अद्यतन tbl_users सेट = पासवर्ड? नाम कहाँ है?")) {// स्ट्रिंग के रूप में पैरामीटर के लिए चर को लिंक करें $ stmt->बाँध_परम ("एस एस", $ पासवर्ड, $ नाम) - // वाक्य को निष्पादित करें $ stmt->निष्पादित करें () - // तैयार बयान $ stmt->बंद () -}

  • नोट: चर $ mysqli mySQLi का कनेक्शन ऑब्जेक्ट है
  • छवि शीर्षक 2542820 4
    4
    MySQLi के साथ एक DELETE क्वेरी बनाएँ नीचे दिए गए कोड से पता चलता है कि mySQLi के साथ तैयार किए गए बयानों का उपयोग करके एक तालिका से डेटा (DELETE) कैसे हटाया जाए

    $ नाम = $ _GET [`उपयोगकर्ता नाम`] - $ पासवर्ड = $ _GET [`पासवर्ड`] - यदि ($ stmt = $ mysqli->तैयारी ("Tbl_users कहाँ से हटाएं नाम =?")) {// स्ट्रिंग के रूप में पैरामीटर के साथ एक चर में शामिल करें $ stmt->बाँध_परम ("रों", $ नाम) - // वाक्य को निष्पादित करें $ stmt->निष्पादित करें () - // तैयार बयान $ stmt->बंद () -}


  • नोट: चर $ mysqli mySQLi का कनेक्शन ऑब्जेक्ट है
  • सामाजिक नेटवर्क पर साझा करें:

    संबद्ध
    © 2021 ekterya.com