⊗ppSpPDQu 58 of 83 menu

PDO vaicājumu problēmas PHP

Kā jau vajadzētu zināt, SQL vaicājumi ir pakļauti SQL injekcijām. PDO paplašinājums ir radīts, lai cīnītos pret injekcijām, bet pēc noklusējuma tas to nedara.

Apskatīsim problēmu ar piemēru. Pieņemsim, ka mums ir šāds vaicājums, kurā tiek ievietots mainīgais:

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

Pieņemsim, ka mūsu mainīgais nāk no kaut kurienes ārējā vidē, piemēram, no GET parametra. Vienkāršības labad, tomēr, iestatīsim tā vērtību manuāli. Mēs gaidām kādu skaitlisku vērtību, piemēram, šādu:

<?php $id = 1; ?>

Ļaunprātīgs hakeris, tomēr, var nodot šādu vērtību (pieņemsim, ka mums ir lauks role):

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

Izrādās, ka mēs gaidījām šādu vaicājumu:

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

Bet saņēmām šādu, kas izvelk vietnes administratoru:

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

Lai izvairītos no šādas situācijas, PDO ir paredzēts īpašs mehānisms, ko sauc par sagatavotajiem vaicājumiem. Tos mēs apskatīsim nākamajā nodarbībā.

Ar nolūku veiciet SQL injekciju savā datu bāzē.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt