⊗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; ?>

ბოროტი ჰაკერი, however, შეიძლება გადასცეს შემდეგი მნიშვნელობა (ჩავთვალოთ, რომ ჩვენ გვაქვს ველი 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
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა