⊗ppSpPDQu 58 of 83 menu

Problemele interogărilor în PDO în PHP

După cum ar trebui să știți deja, interogările SQL sunt vulnerabile la injecții SQL. Extensia PDO este concepută pentru a lupta împotriva injecțiilor, dar în mod implicit, nu face acest lucru automat.

Să analizăm problema cu un exemplu. Să presupunem că avem următoarea interogare, în care este inserată o variabilă:

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

Să presupunem că variabila noastră provine de undeva din exterior, de exemplu, dintr-un parametru GET. Pentru simplitate, totuși, să îi stabilim valoarea manual. Ne așteptăm la o valoare numerică, de exemplu, aceasta:

<?php $id = 1; ?>

Un hacker rău intenționat, totuși, poate transmite următoarea valoare (presupunem că avem câmpul role):

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

Se dovedește că noi am vrut următoarea interogare:

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

Și am obținut următoarea, care extrage administratorul site-ului:

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

Pentru a evita o astfel de situație, în PDO este prevăzut un mecanism special, care se numește interogări pregătite. Le vom analiza în lecția următoare.

Realizați intenționat o injecție SQL în baza dvs. de date.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge