⊗ppSpPDQu 58 of 83 menu

PHP да PDO суроваларидаги муаммолар

Сиз билишингиз керакки, 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çeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш