⊗ppSpPDQu 58 of 83 menu

PHP-də PDO sorğularında problemlər

Artıq bilməlisiniz ki, SQL sorğuları SQL-inyeksiyalarına həssasdır. PDO genişlənməsi inyeksiyalarla mübarizə aparmaq üçün nəzərdə tutulub, lakin avtomatik olaraq, standart olaraq, bunu etmir.

Gəlin problemi bir nümunə ilə görək. Tutaq ki, bizdə dəyişənin əlavə edildiyi aşağıdakı sorğu var:

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

Tutaq ki, bizim dəyişənimiz kənardan gəlir, məsələn, GET parametrindən. Ancaq sadəlik üçün gəlin onun qiymətini əl ilə təyin edək. Biz müəyyən bir ədədi qiymət gözləyirik, məsələn, belə:

<?php $id = 1; ?>

Lakin pis niyyətli haker aşağıdakı qiyməti ötürə bilər (fərz edək ki, bizdə role sahəsi var):

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

Belə çıxır ki, biz aşağıdakı sorğunu istəyirdik:

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

Amma saytın administratorunu çıxaran aşağıdakı sorğunu aldıq:

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

Belə bir vəziyyətin qarşısını almaq üçün, PDO-da hazırlanmış sorğular adlanan xüsusi mexanizm nəzərdə tutulub. Onları növbəti dərsdə təhlil edəcəyik.

Qəsdən bazanıza SQL-inyeksiyası həyata keçirin.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČ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
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et