⊗ppSpPDQu 58 of 83 menu

Проблеми со барањата во PDO во PHP

Како што веќе треба да знаете, SQL барањата се подложни на SQL-инјекции. Проширувањето PDO е создадено да се бори против инјекции, но седноставно, по default, тоа не го прави.

Ајде да ја погледнеме проблематиката преку пример. Нека имаме следното барање, во кое се вметнува променлива:

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

За да се избегне ваква ситуација, во PDO е предвиден специјален механизам, кој се вика подготвени барања. Нив ќе ги разгледуваме во следната лекција.

Намерно извршете SQL-инјекција кон вашата база.

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