⊗ppSpPDQu 58 of 83 menu

PDO-дағы сұраулардың мәселелері PHP-те

Сіз білуіңіз керек, SQL сұраулары SQL-инъекцияларына ұшырайды. PDO кеңейтімі инъекцияларға қарсы күресу үшін жасалған, бірақ әдепкі бойынша, ол мұны өздігінен жасамайды.

Мәселені мысалмен қарастырайық. Бізде айнымалы енгізілетін келесі сұрау бар делік:

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

Біздің айнымалымыз сырттан келеді делік, мысалы, GET-параметрінен. Қарапайымдылық үшін, оның мәнін қолмен берейік. Біз сандық мән күтеміз, мысалы, мынаны:

<?php $id = 1; ?>

Ал, зұлым хакер мына мәнді бере алады (бізде role өрісі бар деп есептейміз):

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

Біз келесі сұрауды күткенбіз:

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

Ал мынау шықты, ол сайт әкімшісін тауып алады:

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

Мұндай жағдайды болдырмау үшін, PDO-да дайындалған сұраулар деп аталатын арнайы механизм бар. Оларды келесі сабақта қарастырамыз.

Желініңізге SQL-инъекцияны әдейі жүргізіңіз.

Қазақ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართული한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау