⊗ppSpPDQu 58 of 83 menu

A PDO lekérdezések problémái PHP-ben

Ahogy már tudnod kell, az SQL lekérdezések ki vannak téve az SQL-injekcióknak. A PDO bővítményt az injekciók elleni küzdelemre tervezték, de alapértelmezés szerint, önmagában, ezt nem teszi meg.

Nézzük meg a problémát egy példán keresztül. Tegyük fel, hogy van egy lekérdezésünk, amelybe egy változó illesztődik be:

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

Tegyük fel, hogy a változónk kívülről érkezik, például egy GET paraméterből. Az egyszerűség kedvéért azonban csak adjunk meg értéket manuálisan. Egy numerikus értéket várunk, például ezt:

<?php $id = 1; ?>

Egy gonosz hacker azonban átadhatja a következő értéket (tegyük fel, hogy van egy role mezőnk):

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

Így az történik, hogy mi a következő lekérdezést szándékoztuk futtatni:

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

De a következőt kaptuk, amely kiválasztja az oldal adminisztrátorát:

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

Hogy elkerüljük ezt a helyzetet, a PDO-ban előkészített egy speciális mechanizmust, amelyet előkészített utasításoknak hívnak. Ezeket a következő leckében fogjuk részletesen megvizsgálni.

Hajtson végre szándékosan egy SQL-injekciót az adatbázisán.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás