WebGoat-8: SQL Injection (mitigation)
ストアド・プロシージャやパラメータ化クエリを学ぶ。
Page 5
穴埋め問題。
プログラミング言語で、ましてやJavaでSQLを構築するなんてやったことないが、前ページを見とけば雰囲気でわかる。
答えは以下の通り。
Connection conn = DriverManager.getConnection(DBURL, DBUSER, DBPW);
PreparedStatement statement = conn.prepareStatement("SELECT status FROM users WHERE name=? AND mail=?");
statement.setString(1, name);
statement.setString(2, mail);
Page 6
こんどは一通り自分でコードを書いてみろ、という問題。
とはいえ前のページから結構パクっている。
String name = "Tom"; // 名前はなんでもいい
String query = "SELECT * FROM users WHERE name = ?";
try (Connection conn = DriverManager.getConnection(DBURL, DBUSER, DBPW);
PreparedStatement stmt = conn.prepareStatement(query)) {
stmt.setString(1, name);
stmt.executeQuery();
} catch (SQLException sqle) {
System.out.println("Oops. Something went wrong!");
}
Page 9
わからん。
Page 10
わからん。
Page 12
わからん。