package Java_JDBC;
import java.sql.*;
import java.util.Scanner;
/**
* @Author quzheng
* @Date 2019/10/2 23:41
* @Version 1.0
* 防止注入攻击:使用 PreparedStatement接口预编译SQL语句
*/
public class JDBC_Avoid_Injection {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://192.168.8.14:3306/day22_JDBC";
String user = "root";
String password = "123456";
Connection con = DriverManager.getConnection(url,user,password);
Scanner sc = new Scanner(System.in);
String username = sc.nextLine();
String passwd = sc.nextLine();
String sql = "select * from users where username=? and PASSWORD=?";
//调用connection接口方法 PrePareStatement
// SQL语句中参数全部使用? 占位符
PreparedStatement pst = con.prepareStatement(sql);
// Statement st = con.createStatement();
//调用PreapareStatement接口实现类对象的set方法,设置
// 占位符的参数
pst.setObject(1,username);
pst.setObject(2,passwd);
// 调用方法,执行sql,参数没有sql
ResultSet rs = pst.executeQuery();
while (rs.next()){
System.out.println(rs.getString("username")+ " "+rs.getString("PASSWORD"));
}
rs.close();
pst.close();
con.close();
}
}
JDBC_Avoid_Injection 避免sql注入
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 一.PreparedStatement执行sql语句 1.首先连接数据库Dao.java 2.PreparedSt...
- 注入原理 平常我们注入时都是通过对原来sql语句传输数据的地方进行相关修改,注入情况会因为该语句本身的情况而受到相...