⊗ppSpPDQu 58 of 83 menu

Probleem met navrae in PDO in PHP

Soos jy reeds moet weet, is SQL-navrae vatbaar vir SQL-inspuitings. Die PDO-uitbreiding is bedoel om inspuitings te bekamp, maar net so, by verstek, doen dit dit nie.

Kom ons kyk na die probleem met 'n voorbeeld. Gestel ons het die volgende navraag, waarin 'n veranderlike ingevoeg word:

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

Gestel ons veranderlike kom van êrens van buite, byvoorbeeld, van 'n GET-parameter. Vir eenvoud, laat ons egter net die waarde daarvan met die hand stel. Ons verwag 'n numeriese waarde, byvoorbeeld so een:

<?php $id = 1; ?>

'n Kwaadwillige hacker kan egter die volgende waarde stuur (ons aanvaar ons het 'n veld role):

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

Dit beteken dat ons die volgende navraag wou hê:

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

Maar ons het die volgende gekry, wat die webwerfadministrateur uithaal:

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

Om so 'n situasie te vermy, het PDO 'n spesiale meganisme voorsien, wat voorbereide navrae genoem word. Ons sal dit in die volgende les ondersoek.

Doen doelbewus 'n SQL-inspuiting op jou databasis.

Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp