Ma question est assez spécifique, mais je pense qu'elle m'aidera à mieux comprendre la sécurité et l'injection SQL. J'exécute une page web locale avec un formulaire simple dans le but de voir comment fonctionne l'injection SQL, en l'appliquant à ma propre base de données et à ma page web. Je continue à changer la façon dont mon fichier php valide un utilisateur afin de pouvoir voir les différences. Je suis un débutant et le fichier php est très simple à dessein. Mon code php actuel est le suivant :
<?php
$username = $_POST['username'];
$password = $_POST['password'];
$conn = mysql_connect('localhost', 'root', 'password');
mysql_select_db(test1);
$query = "SELECT username, password FROM users WHERE username = '$username'";
$result = mysql_query($query) or die("Query failed: " . mysql_error());
$arr = mysql_fetch_array($result);
if($arr['username'] == $username && $arr['password'] == $password && strlen($username) > 0){
header('Location:index.php');
}else{
header('Location:login.html');
}
?>
Je ne sais pas si c'est une bonne ou une mauvaise façon de valider. Je veux juste connaître un exemple de la façon de l'injecter parce que je n'arrive pas à le comprendre. MySQL_query() ne permet qu'une seule instruction, je ne peux donc pas enchaîner les instructions, et je ne sais pas quoi faire d'autre. J'ai modifié le fichier pour pouvoir faire
ou 1=1 ; --
types d'injection, mais il est évident que celui-là ne fonctionnera pas ici. Donc juste par curiosité. Merci.