-1

私の知る限り、PHP では一度に 1 つの挿入ステートメントしか実行できません: (それが著しく間違っている場合は、残りを読み続けないでください :))

これは行を挿入しません:

$query = "insert into users (email) values ('test1');insert into users (email) values ('test2'); ";
$result = mysql_query($query);

これは1行を挿入しますが:

$query = "insert into users (email) values ('test1');";
$result = mysql_query($query);

まず、今まで言ったことは正しいですか?

もしそうなら、それはこれに似た (推測だけの) SQL インジェクションを行うことが不可能であることを意味しますか?

$_GET['bad_var'] = '1");drop table users;'
$query = "insert into users (email) values (".$_GET['bad_var'].")";
$result = mysql_query($result);

その結果、insert into users (email) values ("1");drop table users;

または、クエリごとに 1 つのステートメントの仮定がここで正しいことを証明しますか?

4

2 に答える 2

1

最初の質問を完全に読み違えました、お詫びします。

実際の質問に答えるには、そうです。mysql_query では、一度に 1 つのステートメントしか実行できないため、その特定の SQL インジェクション ベクトルを軽減できます。この同様の質問を参照してください: 1 つの mysql_query で複数の SQL ステートメントを実行するにはどうすればよいですか?

于 2013-06-02T18:41:55.030 に答える