⊗ppSpPDQu 58 of 83 menu

Problémy dopytov v PDO v PHP

Ako už určite viete, SQL dopytom hrozí SQL injekcie. Rozšírenie PDO je navrhnuté tak, aby bojovalo proti injekciám, ale jednoducho tak, štandardne, to nerobí.

Pozrime sa na problém na príklade. Predpokladajme, že máme nasledujúci dopyt, do ktorého sa vkladá premenná:

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

Predpokladajme, že naša premenná prichádza odniekiaľ zvonku, napríklad z GET parametra. Pre jednoduchosť, však, ju jednoducho nastavme ručne. Očakávame nejakú číselnú hodnotu, napríklad takúto:

<?php $id = 1; ?>

Zlomyseľný hacker, však, môže odoslať nasledujúcu hodnotu (predpokladajme, že máme pole role):

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

Výsledkom je, že sme chceli nasledujúci dopyt:

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

Ale dostali sme nasledujúci, ktorý vytiahne administrátora stránky:

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

Aby sme sa vyhli tejto situácii, v PDO je pripravený špeciálny mechanizmus, ktorý sa nazýva prípravené dopytov. Tie si rozoberieme v nasledujúcej lekcii.

Úmyselne vykonajte SQL injekciu do vašej databázy.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť