一、SQL注入问题
SQL存在漏洞,会被攻击,导致数据泄露。
本质上是SQL拼接。
二、SQL注入代码示例
package lesson02;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SQL {
//主方法
public static void main(String[] args) throws SQLException {
login(" 'or 1=1"," 'or 1=1");
}
//登录业务
public static void login(String username,String password) throws SQLException {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = JdbcUtils.getConnection();
st = conn.createStatement();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
String sql = "select * from users where `name`='"+username+" and `password`='"+password;
rs = st.executeQuery(sql);
while (rs.next()){
System.out.println(rs.getString("name"));
System.out.println(rs.getString("password"));
System.out.println("============================");
}
JdbcUtils.release(conn,st,rs);
}
}
解析:
SQL注入的代码,实质上就是SQL语句的拼接。
select * from users where `name`=' ' or 1=1 and `password`=' ' or 1=1
该SQL语句可以获得users表中的所有用户信息。