mysql java 注入_java连接mysql演示SQL注入攻击

importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Scanner;/*SQL 注入攻击*/

public classDemo02 {public static voidmain(String[] args) {try{

Statement statement=JDBCUtil.getConnection().createStatement();//selectAll(statement);

select();

}catch(SQLException s){

s.printStackTrace();

}

}/*** 使用 。。登录数据库 zeng 1 ' or '1=1

*@paramstatement*/

public static voidselectAll(Statement statement){

Scanner scanner=newScanner(System.in);

String username=scanner.nextLine();

String pwd=scanner.nextLine();

String sql="select*from user where username='"+username+"' and pwd='"+pwd+"';";try{boolean b=statement.execute(sql);

System.out.println(b);

ResultSet resultSet=statement.executeQuery(sql);while(resultSet.next()){

System.out.println(resultSet.getString("username")+"\t"+resultSet.getString("pwd"));

}

scanner.close();

resultSet.close();

statement.close();

}catch(SQLException e) {

e.printStackTrace();

}

}/*** 创建一个PreparedStatement对象,用于将参数化的SQL语句发送到数据库。

* SQL语句可以预编译并存储在PreparedStatement对象中

* 防止注入攻击*/

public static voidselect(){

Scanner scanner=newScanner(System.in);

String username=scanner.nextLine();

String pwd=scanner.nextLine();

String sql="select*from user where username= ? and pwd= ?";try{

PreparedStatement preparedStatement=JDBCUtil.getConnection().prepareStatement(sql);//使用给定对象设置指定参数的值。

preparedStatement.setObject(1,username);

preparedStatement.setObject(2,pwd);//执行此 PreparedStatement对象中的SQL查询,并返回查询 PreparedStatement的 ResultSet对象。

ResultSet resultSet=preparedStatement.executeQuery();while(resultSet.next()){

System.out.println(resultSet.getString("username")+"\t"+resultSet.getString("pwd"));

}

scanner.close();

resultSet.close();

preparedStatement.close();

}catch(SQLException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值