首页 > 编程知识 正文

SQL注入漏洞常用函数,简述SQL注入漏洞的原理

时间:2023-05-05 04:42:05 阅读:279501 作者:3747

微笑的乌冬面浅谈:SQL注入漏洞

在程序的实际使用中,为了管理庞大的数据信息,就会使用到数据库。用户在使用程序时,程序可以自动通过自动对数据库的查询,而我认为的注入漏洞即是通过一些查询数据库的语句来实现。

下面一段代码来演示SQL注入漏洞的原理:

public static void main(String[] args) throws SQLException {

Scanner scanner = new Scanner(System.in);
System.out.println("请输入用户名");
String username = scanner.nextLine();
System.out.println("请输入密码");
String password = scanner.nextLine();


//假设username=zhangsan  password= 123456
//下述字符串查询语句可以携程select * from user where username=zhnagsan  password=123456
//下面代码有注入漏洞  
//String sql = "select * from user where username='" + username+"'and password='"+password+"'";

//下面一行代码是实现查询数据库数据的代码,其中有我自己创造的工具类等,读者不必深究,知道即可。

//
/*List<Map<String, Object>> list = DBUtils.getMapList(sql);

//如果查询出来数据库有值,即说明查到的内容不为空,即登录成功

//这也是出现注入漏洞的地方,比如说你输入密码为 123 ' or ' 1=1   这样这个语句在我的查询数据库语句永远是真的,见上边四行//代码

if(list!=null&&list.size()>0){
System.out.println("登录成功");
}else {
System.out.println("登录失败");
}*/

//防止注入漏洞
User user = new DBUtils<User>(User.class).getBean(" username='"+username+"'");
if(user!=null && user.getPassword()!=null && password!=null && password.equals(user.getPassword())){
System.out.println("登录成功");
}else{
System.out.println("登录失败");
}




版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。