⊗ppSpPDQu 58 of 83 menu

Problemas de consultas em PDO no PHP

Como você já deve saber, consultas SQL são vulneráveis a injeções de SQL. A extensão PDO foi criada para combater injeções, mas simplesmente, por padrão, ela não faz isso.

Vamos ver o problema com um exemplo. Suponha que temos a seguinte consulta, na qual uma variável é inserida:

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

Suponha que nossa variável venha de algum lugar externo, por exemplo, de um parâmetro GET. Para simplificar, no entanto, vamos apenas definir seu valor manualmente. Esperamos algum valor numérico, por exemplo, este:

<?php $id = 1; ?>

Um hacker mal-intencionado, no entanto, pode enviar o seguinte valor (vamos assumir que temos um campo role):

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

Resulta que queríamos a seguinte consulta:

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

Mas obtivemos a seguinte, que retorna o administrador do site:

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

Para evitar esta situação, o PDO disponibiliza um mecanismo especial, chamado de consultas preparadas. Vamos analisá-las na próxima lição.

Intencionalmente, execute uma injeção de SQL em seu banco de dados.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar