3

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 はまだ存在し、その中の行は変更されていません。理由を教えてもらえますか?

4

2 に答える 2

1

mysqli_query() は、複数のクエリの実行をサポートしていません。

于 2013-08-31T05:35:30.063 に答える
0

$usernameloginエラーを生成する文字列を指定すると、引用符がありません。引用符を追加するか、番号を指定してください

于 2013-08-31T00:54:29.097 に答える