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

Злонамерен хакер, обаче, може да предаде следната стойност (приемаме, че имаме поле 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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне