これは、自分のコードを保護するためのMySQLインジェクションをよりよく理解するための、自分のデータベースに対する教育の試みであることに最初に注意したいと思います。
次のコードに対してMySQLインジェクションを構築する方法の例をいくつか考え出す必要があります。これは基本的なユーザーログインシステムであり、エスケープせずにユーザー名とパスワードを受け入れます
$user = (!empty($_POST['user'])) ? $_POST['user'] : '';
$pass = (!empty($_POST['pass'])) ? $_POST['pass'] : '';
次に、MySQLクエリは、次のように、usersという名前のテーブルに入力されたユーザー名とパスワードを見つけようとします。
$res = mysql_query("SELECT * from users where user='{$user}' AND pass='{$pass}'");
これはエスケープされていない入力であり、次の目的でMySQLインジェクションを考え出そうとしています。
- 正当なユーザーのユーザー名を知っているパスワードをバイパスし(私のユーザーテーブルの1人のユーザーはテスターです)、
- ユーザーテーブル全体を削除するインジェクション。
ウィキペディアのMySQLインジェクションの例をいくつか試しましたが{}
、クエリ内でインジェクションが妨げられていると思われるので、これに自信のある方の助けをいただければ幸いです。ありがとうございました。