SQLインジェクションの例
Webページのフォームを使い,MySQLデータベースにSQLインジェクションを実行しようとしています.
環境はもちろんローカル環境です.
テーブルはこのようになっています.
mysql> DESC member;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| no | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | | |
+-------+--------------+------+-----+---------+----------------+
JSPページのソースの一部はこのようになっています.
PreparedStatement ps = db.prepareStatement("INSERT INTO member(no, name) VALUES(" + no + ",'" + name + "')");
noに
12
nameに
name'); DELETE FROM member; --
という入力を与えると
INSERT INTO member(no, name) VALUES(12,'name'); DELETE FROM member; --')
となり,テーブルのデータを全て消去できると考えましたが,文法エラーとなるらしく,消去されません.
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; DELETE FROM member; --')' at line 1
この場合,ソース・フォーム入力内容・データベースなどのどの箇所をどのように修正すれば良いでしょうか?