⊗ppSpPDQu 58 of 83 menu

Problemas de consultas en PDO en PHP

Como ya debes saber, las consultas SQL son susceptibles a inyecciones SQL. La extensión PDO está diseñada para combatir las inyecciones, pero simplemente así, por defecto, no lo hace.

Veamos el problema con un ejemplo. Supongamos que tenemos la siguiente consulta, en la que se inserta una variable:

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

Supongamos que nuestra variable llega desde algún lugar externo, por ejemplo, desde un parámetro GET. Por simplicidad, sin embargo, simplemente establezcamos su valor manualmente. Esperamos algún valor numérico, por ejemplo, así:

<?php $id = 1; ?>

Un hacker malintencionado, sin embargo, podría enviar el siguiente valor (supongamos que tenemos un campo role):

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

Resulta que queríamos la siguiente consulta:

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

Pero obtuvimos la siguiente, que extrae al administrador del sitio:

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

Para evitar esta situación, en PDO se prevé un mecanismo especial, que se llama consultas preparadas. Las analizaremos en la siguiente lección.

Realiza intencionalmente una inyección SQL a tu base de datos.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar