⊗ppSpPDQu 58 of 83 menu

Päringute probleemid PDO-s PHP-s

Nagu te juba teate, on SQL-päringud altid SQL-injektsioonidele. PDO laiendus on loodud injektsioonide vastu võitlemiseks, kuid lihtsalt vaikimisi ei tee seda automaatselt.

Vaatame probleemi näite varal. Olgem, et meil on järgmine päring, kuhu sisestatakse muutuja:

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

Olgem, et meie muutuja tuleb kuskilt väljast, näiteks GET-parameetrist. Lihtsuse huvides aga määrame selle väärtuse käsitsi. Me ootame mingit numbrilist väärtust, näiteks sellist:

<?php $id = 1; ?>

Õel häkker võib aga edastada järgmise väärtuse (eeldame, et meil on väli role):

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

Selgub, et me tahtsime järgmist päringut:

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

Kuid saime järgmise, mis tõmbab välja veebisaidi administraatori:

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

Sellise olukorra vältimiseks on PDO-s ette nähtud spetsiaalne mehhanism, mida nimetatakse ettevalmistatud päringuteks. Neid analüüsime järgmises õppetükis.

Tehke tahtlikult SQL-injektsioon oma andmebaasi.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu