Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

consulta de injeção MySQL


Seria, a menos que você inclua aspas simples no name postado , o que permitiria que você saísse das aspas. Exemplo, poste o nome como:
' or 1 or '

A cláusula WHERE se torna:
WHERE id = '' or 1 or '';

Isso corresponderia e recuperaria todas as linhas na tabela devido ao or 1 papel. Como você pode ver, ele quebra as aspas para injetar um pouco de SQL, depois volta para as aspas para tornar a consulta válida.

Não, mas se foi executado com mysqli_multi_query então sim, você pode adicionar várias consultas ao final.

Geralmente sim, mas uma Declaração Preparada seria melhor. Usando o escape, o WHERE cláusula se tornaria (usando meu exemplo acima):
WHERE id = '\' or 1 or \'';

Isso não é mais vulnerável porque as aspas não podem ser quebradas e só corresponderiam a linhas se o name literalmente corresponde a ' or 1 or ' o que é obviamente improvável.