SQLインジェクションに対して脆弱な次のコードがあります(私は思いますか?):
$IDquery = mysqli_query($connection, "SELECT `ID` FROM users WHERE username=$usernamelogin");
をエスケープしません$usernamelogin
。これはパラメーター化されたクエリではありません。これは明らかに修正する必要があります。指摘する必要はありません。それはこの質問の目的ではありません。修正する前に、SQL インジェクションがどのように機能するかをできる限り理解したいと思います。そこで、「droptable」という名前のテーブルを作成し、ユーザー名入力に次のように入力してみました。
x; DROP TABLE droptable;
このSQLクエリを入力する必要があると私は信じています:
SELECT `ID` FROM users WHERE username=x; DROP TABLE droptable;
ただし、droptable はまだ存在し、その中の行は変更されていません。理由を教えてもらえますか?