⊗ppSpPDQu 58 of 83 menu

Проблеме упита у ПДО у ПХП-у

Као што већ морате знати, СКЛ упити су подложни СКЛ-инјекцијама. Проширење ПДО има за циљ да се бори против инјекција, али само тако, подразумевано, оно то не чини.

Хајде да погледамо проблем на примеру. Претпоставимо да имамо следећи упит, у који се убацује променљива:

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

Да би се избегла таква ситуација, у ПДО је предвиђен посебан механизам, који се зове припремљени упити. Њих ћемо разлагати у следећој лекцији.

Намерно извршите СКЛ-инјекцију на вашу базу података.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј