⊗ppSpPDQu 58 of 83 menu

Užklausų problemos PDO PHP

Kaip jau turėtumėte žinoti, SQL užklausos yra pažeidžiamos SQL injekcijų. PDO plėtinys sukurtas kovoti su injekcijomis, tačiau pats savaime, pagal numatytuosius nustatymus, jis to nedaro.

Pažvelkime į problemą pavyzdžiu. Tarkime, kad turime tokią užklausą, į kurią įterpiamas kintamasis:

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

Tarkime, kad mūsų kintamasis ateina iš kažkur išorės, pavyzdžiui, iš GET parametro. Kad būtų paprasčiau, tiesiog nustatykime jo reikšmę rankiniu būdu. Mes tikimės skaitinės reikšmės, pavyzdžiui, tokios:

<?php $id = 1; ?>

Tačiau piktavalius įsilaužėlis gali perduoti tokią reikšmę (tarkime, kad mes turime lauką role):

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

Pasirodo, mes norėjome šios užklausos:

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

O gavome tokią, kuri ištraukia svetainės administratorių:

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

Kad išvengtume tokios situacijos, PDO turi specialų mechanizmą, kuris vadinamas paruoštos užklausos. Jas nagrinėsime kitoje pamokoje.

Sąmoningai atlikite SQL injekciją į savo duomenų bazę.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti