Jinsi ya Kuzuia SQL sindano katika PHP (na Picha)

Orodha ya maudhui:

Jinsi ya Kuzuia SQL sindano katika PHP (na Picha)
Jinsi ya Kuzuia SQL sindano katika PHP (na Picha)

Video: Jinsi ya Kuzuia SQL sindano katika PHP (na Picha)

Video: Jinsi ya Kuzuia SQL sindano katika PHP (na Picha)
Video: Ujanja wa Kupaua bati za Kuficha(Contemporary Roofing) 2024, Mei
Anonim

WikiHow inafundisha jinsi ya kuzuia sindano ya SQL ukitumia Taarifa Tayari katika PHP. SQL sindano ni moja ya udhaifu wa kawaida katika matumizi ya Wavuti leo. Kauli zilizoandaliwa hutumia vigezo vilivyofungwa na haziunganishi vigeuzi na nyuzi za SQL, na kuifanya iwezekane kwa mshambuliaji kurekebisha taarifa ya SQL.

Kauli zilizotayarishwa zinachanganya kutofautisha na taarifa iliyokusanywa ya SQL, ili SQL na vigeuzi vimetumwa tofauti. Vigeuzi hutafsiriwa kama kamba tu na sio sehemu ya taarifa ya SQL. Kutumia njia katika hatua zilizo hapa chini, hautahitaji kutumia mbinu zingine za kuchuja sindano ya SQL kama vile mysql_real_escape_string ().

Hatua

Sehemu ya 1 ya 2: Kuelewa SQL sindano

Hatua ya 1. SQL sindano ni aina ya mazingira magumu katika programu zinazotumia hifadhidata ya SQL

Hatari hutokea wakati pembejeo ya mtumiaji inatumiwa katika Taarifa ya SQL:

$ name = $ _GET ['jina la mtumiaji']; $ swala = "CHAGUA nenosiri KUTOKA kwa tbl_user WAPI jina = '$ name'";

Hatua ya 2. Thamani ambayo mtumiaji huingia kwenye jina la mtumiaji la URL litatengwa kwa jina la $ variable

Halafu imewekwa moja kwa moja kwenye taarifa ya SQL, na kuiwezesha mtumiaji kuhariri taarifa ya SQL.

$ name = "admin 'AU 1 = 1 -"; $ swala = "CHAGUA nenosiri KUTOKA kwa tbl_user WAPI jina = '$ name'";

Hatua ya 3. Hifadhidata ya SQL itapokea taarifa ya SQL kama ifuatavyo:

Chagua nywila kutoka kwa watumiaji wa tbl WAPI jina = 'admin' AU 1 = 1 - '

  • Hii ni halali SQL, lakini badala ya kurudisha nywila moja kwa mtumiaji, taarifa hiyo itarudisha nywila zote kwenye meza tbl_user. Hiki sio kitu unachotaka katika programu tumizi za wavuti.

Sehemu ya 2 ya 2: Kutumia mySQLi Kuunda Taarifa Tayari

2542820 1
2542820 1

Hatua ya 1. Unda swala la kuchagua la MySQLi

Tumia nambari iliyo hapa chini KUCHAGUA data kutoka kwa meza ukitumia Taarifa Zilizotayarishwa za mySQLi.

$ name = $ _GET ['jina la mtumiaji']; ikiwa ($ stmt = $ mysqli-> andaa ("CHAGUA nenosiri KUTOKA kwa watumiaji wa tbl WAPI jina =?")) $ stmt-> bind_param ("s", $ jina); // Tekeleza taarifa hiyo. $ stmt-> kutekeleza (); // Pata vigeuzi kutoka kwa swala. $ stmt-> bind_result ($ kupita); // Leta data. $ stmt-> kuleta (); // Onyesha data. printf ("Nenosiri la mtumiaji% s ni% s / n", jina la $, $ pass); // Funga taarifa iliyoandaliwa. $ stmt-> karibu (); }

Kumbuka: $ mysqli inayobadilika ni kitu cha Uunganisho cha mySQLi

2542820 2
2542820 2

Hatua ya 2. Unda Swala la UWEKEZAJI wa mySQLi

Tumia nambari iliyo hapa chini kuingiza data kwenye jedwali ukitumia Taarifa Zilizotayarishwa za MySQLi.

$ name = $ _GET ['jina la mtumiaji']; Nenosiri la $ = $ _GET ['password']; ikiwa ($ stmt = $ mysqli-> andaa ("INSERT INTO tbl_users (jina, nywila) MAADILI (?,?)")) {// Funga vigeuzi kwenye parameta kama kamba. $ stmt-> bind_param ("ss", jina la $, $ password); // Tekeleza taarifa hiyo. $ stmt-> kutekeleza (); // Funga taarifa iliyoandaliwa. $ stmt-> karibu (); }

Kumbuka: $ mysqli inayobadilika ni kitu cha Uunganisho cha mySQLi

2542820 3
2542820 3

Hatua ya 3. Unda swala la mySQLi UPDATE

Tumia nambari iliyo hapa chini kusasisha data kwenye jedwali ukitumia Tamko zilizoandaliwa za MySQLi.

$ name = $ _GET ['jina la mtumiaji']; Nenosiri la $ = $ _GET ['password']; ikiwa ($ stmt = $ mysqli-> andaa ("UPDATE tbl_users SET password =? WAPI jina =?")) {// Funga vigeuzi kwenye parameta kama kamba. $ stmt-> bind_param ("ss", nywila ya $, jina la $); // Tekeleza taarifa hiyo. $ stmt-> kutekeleza (); // Funga taarifa iliyoandaliwa. $ stmt-> karibu (); }

Kumbuka: $ mysqli inayobadilika ni kitu cha Uunganisho cha mySQLi

2542820 4
2542820 4

Hatua ya 4. Unda swala la mySQLi DELETE

Hati iliyo hapo chini ni jinsi ya KUFUTA data kutoka kwa meza ukitumia Taarifa Zilizotayarishwa za MySQLi.

$ name = $ _GET ['jina la mtumiaji']; Nenosiri la $ = $ _GET ['password']; ikiwa ($ stmt = $ mysqli-> jitayarisha ("FUTA KUTOKA tbl_users WAPI jina =?")) {// Funga ubadilishaji kwa parameta kama kamba. $ stmt-> bind_param ("s", $ jina); // Tekeleza taarifa hiyo. $ stmt-> kutekeleza (); // Funga taarifa iliyoandaliwa. $ stmt-> karibu (); }

Ilipendekeza: