በ PHP ውስጥ የ SQL መርፌን እንዴት መከላከል እንደሚቻል (ከስዕሎች ጋር)

ዝርዝር ሁኔታ:

በ PHP ውስጥ የ SQL መርፌን እንዴት መከላከል እንደሚቻል (ከስዕሎች ጋር)
በ PHP ውስጥ የ SQL መርፌን እንዴት መከላከል እንደሚቻል (ከስዕሎች ጋር)

ቪዲዮ: በ PHP ውስጥ የ SQL መርፌን እንዴት መከላከል እንደሚቻል (ከስዕሎች ጋር)

ቪዲዮ: በ PHP ውስጥ የ SQL መርፌን እንዴት መከላከል እንደሚቻል (ከስዕሎች ጋር)
ቪዲዮ: Doctors Ethiopia: FANATVክፍል 3 ስንፈተ ወሲብ እና ማስተርቤሽን (ሴጋ) ለ ግብረ ሰጋ ግንኙነት መፍትሄ ይሆናል?// 2024, ግንቦት
Anonim

ይህ wikiHow በ PHP ውስጥ የተዘጋጁ መግለጫዎችን በመጠቀም የ SQL መርፌን እንዴት መከላከል እንደሚችሉ ያስተምርዎታል። የ SQL መርፌ ዛሬ በድር መተግበሪያዎች ውስጥ በጣም የተለመዱ ተጋላጭነቶች አንዱ ነው። የተዘጋጁ መግለጫዎች የታሰሩ ግቤቶችን ይጠቀማሉ እና ተለዋዋጮችን ከ SQL ሕብረቁምፊዎች ጋር አያዋህዱም ፣ ይህም አጥቂ የ SQL መግለጫውን መለወጥ አይችልም።

የተዘጋጁ መግለጫዎች ተለዋዋጭውን ከተሰበሰበው የ SQL መግለጫ ጋር ያዋህዳል ፣ ስለሆነም SQL እና ተለዋዋጮች ለየብቻ ይላካሉ። ተለዋዋጮቹ እንደ ተራ ሕብረቁምፊዎች ይተረጎማሉ እና የ SQL መግለጫ አካል አይደሉም። ከዚህ በታች ባሉት ደረጃዎች ውስጥ ያሉትን ዘዴዎች በመጠቀም እንደ mysql_real_escape_string () ያሉ ማንኛውንም ሌላ የ SQL መርፌ ማጣሪያ ዘዴዎችን መጠቀም አያስፈልግዎትም።

ደረጃዎች

የ 2 ክፍል 1 የ SQL መርፌን መረዳት

ደረጃ 1. የ SQL መርፌ በ SQL የመረጃ ቋት በሚጠቀሙ መተግበሪያዎች ውስጥ የተጋላጭነት አይነት ነው።

በ SQL መግለጫ ውስጥ የተጠቃሚ ግብዓት ጥቅም ላይ ሲውል ተጋላጭነቱ ይከሰታል።

$ name = $ _GET ['የተጠቃሚ ስም']; $ መጠይቅ = "ከ tbl_user WHERE ስም = '$ name'" የይለፍ ቃል ይምረጡ ፤

ደረጃ 2. አንድ ተጠቃሚ ወደ ዩአርኤል ተለዋዋጭ የተጠቃሚ ስም የገባው እሴት ለተለዋዋጭ $ ስም ይመደባል።

ከዚያ በቀጥታ ወደ SQL መግለጫ ውስጥ እንዲገባ ይደረጋል ፣ ይህም ተጠቃሚው የ SQL መግለጫውን እንዲያስተካክል ያስችለዋል።

$ name = "አስተዳዳሪ" ወይም 1 = 1 - "; $ መጠይቅ = "ከ tbl_user WHERE ስም = '$ name'" የይለፍ ቃል ይምረጡ ፤

ደረጃ 3. የ SQL የመረጃ ቋቱ የ SQL መግለጫውን እንደሚከተለው ይቀበላል።

ከ tbl_users WHERE ስም = 'አስተዳዳሪ' ወይም 1 = 1 - 'የይለፍ ቃል ይምረጡ

  • ይህ የሚሰራ SQL ነው ፣ ግን ለተጠቃሚው አንድ የይለፍ ቃል ከመመለስ ይልቅ ፣ መግለጫው በ tbl_user ሰንጠረዥ ውስጥ ያሉትን ሁሉንም የይለፍ ቃሎች ይመልሳል። ይህ በድር መተግበሪያዎችዎ ውስጥ የሚፈልጉት ነገር አይደለም።

    የ 2 ክፍል 2 - የተዘጋጁ መግለጫዎችን ለመፍጠር mySQLi ን መጠቀም

    2542820 1
    2542820 1

    ደረጃ 1. የ MySQLi SELECT ጥያቄን ይፍጠሩ።

    MySQLi የተዘጋጁ መግለጫዎችን በመጠቀም ከሠንጠረዥ ውሂብን ለመምረጥ ከዚህ በታች ያለውን ኮድ ይጠቀሙ።

    $ name = $ _GET ['የተጠቃሚ ስም']; ($ stmt = $ mysqli-> ካዘጋጁ ("የይለፍ ቃል ከ tbl_users WHERE ስም =?")) {// ተለዋጩን እንደ ልኬት እንደ ገመድ ያያይዙ። $ stmt-> bind_param ("s" ፣ $ name); // መግለጫውን ያስፈጽሙ። $ stmt-> ማስፈጸም (); // ተለዋዋጮችን ከጥያቄው ያግኙ። $ stmt-> bind_result ($ ማለፊያ); // ውሂቡን ያምጡ። $ stmt-> አምጣ (); // ውሂቡን ያሳዩ። printf ("የይለፍ ቃል ለተጠቃሚ %s %s / n" ፣ $ name ፣ $ pass) ፤ // የተዘጋጀውን መግለጫ ይዝጉ። $ stmt-> መዝጋት (); }

    ማስታወሻ: ተለዋዋጭ $ mysqli የ mySQLi የግንኙነት ነገር ነው።

    2542820 2
    2542820 2

    ደረጃ 2. የ MySQLi INSERT ጥያቄን ይፍጠሩ።

    MySQLi የተዘጋጁ መግለጫዎችን በመጠቀም መረጃን ወደ ሰንጠረዥ ለማስገባት ከዚህ በታች ያለውን ኮድ ይጠቀሙ።

    $ name = $ _GET ['የተጠቃሚ ስም']; $ ይለፍ ቃል = $ _GET ['ይለፍ ቃል']; ($ stmt = $ mysqli-> ካዘጋጁ ("አስገባ tbl_users (ስም ፣ የይለፍ ቃል) እሴቶች (?,?)")) {// ተለዋዋጮችን ወደ ልኬቱ እንደ ሕብረቁምፊ ያያይዙ። $ stmt-> bind_param ("ss" ፣ $ name ፣ $ password) ፤ // መግለጫውን ያስፈጽሙ። $ stmt-> ማስፈጸም (); // የተዘጋጀውን መግለጫ ይዝጉ። $ stmt-> መዝጋት (); }

    ማሳሰቢያ: ተለዋዋጭ $ mysqli የ mySQLi የግንኙነት ነገር ነው።

    2542820 3
    2542820 3

    ደረጃ 3. የ MySQLi UPDATE ጥያቄን ይፍጠሩ።

    MySQLi የተዘጋጁ መግለጫዎችን በመጠቀም በሰንጠረዥ ውስጥ መረጃን ለማዘመን ከዚህ በታች ያለውን ኮድ ይጠቀሙ።

    $ name = $ _GET ['የተጠቃሚ ስም']; $ ይለፍ ቃል = $ _GET ['ይለፍ ቃል']; ከሆነ ($ stmt = $ mysqli-> አዘጋጅ ("tPD-tbl_users SET password =? የት ስም =?")) {// ተለዋዋጮችን ወደ ልኬቱ እንደ ሕብረቁምፊ ያያይዙ። $ stmt-> bind_param ("ss" ፣ $ password ፣ $ name) ፤ // መግለጫውን ያስፈጽሙ። $ stmt-> ማስፈጸም (); // የተዘጋጀውን መግለጫ ይዝጉ። $ stmt-> መዝጋት (); }

    ማስታወሻ: ተለዋዋጭ $ mysqli የ mySQLi የግንኙነት ነገር ነው።

    2542820 4
    2542820 4

    ደረጃ 4. የ MySQLi DELETE ጥያቄን ይፍጠሩ።

    ከዚህ በታች ያለው ስክሪፕት የ MySQLi የተዘጋጁ መግለጫዎችን በመጠቀም መረጃን ከጠረጴዛ እንዴት መሰረዝ እንደሚቻል ነው።

    $ name = $ _GET ['የተጠቃሚ ስም']; $ ይለፍ ቃል = $ _GET ['ይለፍ ቃል']; ከሆነ ($ stmt = $ mysqli-> አዘጋጅ ("ከ tbl_users WHERE ስም =?")) {// ተለዋጩን እንደ ልኬት እንደ ገመድ ያያይዙት። $ stmt-> bind_param ("s" ፣ $ name); // መግለጫውን ያስፈጽሙ። $ stmt-> ማስፈጸም (); // የተዘጋጀውን መግለጫ ይዝጉ። $ stmt-> መዝጋት (); }

የሚመከር: