Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête d'injection MySQL

Ce serait à moins que vous n'incluiez des guillemets simples dans le name affiché , ce qui vous permettrait de sortir des guillemets. Exemple, publiez le nom sous :

' or 1 or '

La clause WHERE devient :

WHERE id = '' or 1 or '';

Cela correspondrait et récupérerait toutes les lignes de la table à cause du or 1 partie. Comme vous pouvez le voir, il sort des guillemets pour injecter du SQL, puis il revient dans les guillemets pour rendre la requête valide.

Non, mais s'il a été exécuté avec mysqli_multi_query alors oui, vous pouvez ajouter plusieurs requêtes à la fin.

Généralement oui, mais une déclaration préparée serait préférable. En utilisant l'échappement, le WHERE clause deviendrait (en utilisant mon exemple ci-dessus):

WHERE id = '\' or 1 or \'';

Ce n'est plus vulnérable car les guillemets ne peuvent pas être séparés et ne correspondraient aux lignes que si le name correspond littéralement à ' or 1 or ' ce qui est évidemment peu probable.