⊗ppSpPDQu 58 of 83 menu

Težave s poizvedbami v PDO v PHP

Kot že morate vedeti, so SQL poizvedbe občutljive na SQL-injekcije. Razširitev PDO je namenjena boju proti injekcijam, vendar tega ne naredi samodejno, privzeto.

Poglejmo si težavo na primeru. Recimo, da imamo naslednjo poizvedbo, v katero se vstavi spremenljivka:

<?php $sql = "SELECT * FROM users WHERE id=$id"; $res = $pdo->query($sql); ?>

Recimo, da naša spremenljivka prihaja od nekod od zunaj, na primer iz GET-parametra. Za enostavnost pa jo določimo ročno. Pričakujemo neko številsko vrednost, na primer takšno:

<?php $id = 1; ?>

Zlonamerni heker pa lahko posreduje naslednjo vrednost (predpostavimo, da imamo polje role):

<?php $id = '-1 OR role="admin"'; ?>

Izkazalo se je, da smo želeli naslednjo poizvedbo:

<?php $sql = "SELECT * FROM users WHERE id=1"; $res = $pdo->query($sql); ?>

Prejeli pa smo naslednjo, ki izvleče administratorja spletnega mesta:

<?php $sql = "SELECT * FROM users WHERE id=-1 OR role="admin""; $res = $pdo->query($sql); ?>

Da se izognemo takšni situaciji, je v PDU predviden poseben mehanizem, ki se imenuje pripravljene poizvedbe. Te bomo obravnavali v naslednji lekciji.

Namerno izvedite SQL-injekcijo v vašo bazo podatkov.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni