Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗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