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.