0x01 JDBC 拼接不当造成 SQL 注入
JDBC 有两种方法执行 SQL 语句,分别为 PrepareStatement 和 Statement,两个方法的区别在于 PrepareStatement 会对 SQL 语句进行预编译,而 Statement 在每次执行时都需要编译,会增大系统开销。
理论上 PrepareStatement 的效率和安全性会比 Statement 好,但不意味着就不会存在问题。
以下是一个使用 Statement 执行 SQL 语句的示例
String sql = "select * from user where id ="+req.getParameter("id");
PrintWriter out = resp.getWriter();
out.println("Statement Demo");
out.println("SQL: "+sql);
try {
Statement st = conn.createStatement(