⊗ppSpPDQu 58 of 83 menu

Problemi upita u PDO-u u PHP-u

Kao što već treba da znate, SQL upiti su podložni SQL-injekcijama. Proširenje PDO je osmišljeno da se bori protiv injekcija, ali prosto tako, podrazumevano, ono to ne čini.

Pogledajmo problem na primeru. Neka imamo sledeći upit, u koji se ubacuje promenljiva:

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

Neka naša promenljiva dolazi odnekud spolja, na primer, iz GET-parametra. Radi jednostavnosti, međutim, hajde samo da postavimo nenu vrednost ručno. Očekujemo neku numeričku vrednost, na primer, ovakvu:

<?php $id = 1; ?>

Zlonamerni haker, međutim, može proslediti sledeću vrednost (smatramo da imamo polje role):

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

Ispostavlja se da smo hteli sledeći upit:

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

A dobili smo sledeći, koji izvlači administratora sajta:

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

Da bismo izbegli ovakvu situaciju, u PDO-u je predviđen poseban mehanizam, koji se zove pripremljeni upiti. Njih ćemo razmatrati u sledećoj lekciji.

Namerno izvršite SQL-injekciju na vašu bazu podataka.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij