遇见SQL注入应该如何解决

这篇文章主要介绍了遇见SQL注入应该如何解决,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。

SQL注入是什么?

看一下百度百科的定义:

遇见SQL注入应该如何解决


啊,好长一大段文字,些许不想看,下面通过一个例子,来说明一下什么是SQL注入:

新建一个数据库,再建一个表,添加两行数据:

use db1;create table user( id int primary key auto_increment, username varchar(32), password varchar(32));insert into user values(null,'zhangsan','123');insert into user values(null,'lisi','234');

表如下图所示:

遇见SQL注入应该如何解决


再随随便便用JDBC写个登陆操作:

package com.wzq.jdbc;import com.wzq.util.JDBCUtils;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Scanner;/*  *   需求:  *       1、通过键盘录入用户名和密码  *       2、判断用户是否登陆成功  * */public class JDBCDemo05 {     public static void main(String[] args) {         Scanner cin = new Scanner(System.in);         System.out.println("请输入用户名:");         String username = cin.nextLine();         System.out.println("请输入密码:");         String password = cin.nextLine();         boolean res = new JDBCDemo05().login(username, password);         if (res) System.out.println("登陆成功!");         else System.out.println("登陆失败!");     }     public boolean login(String username, String password) {         if (username == null || password == null) {             return false;         }         Connection conn = null;         Statement stmt = null;         ResultSet rs = null;         try {             //1、获取数据库连接             conn = JDBCUtils.getConnection();   //JDBCUtils工具类             //2、定义sql             String sql = "select * from user where username = '" + username + "' and password = '" + password + "'";             //3、获取执行sql的对象             stmt = conn.createStatement();             //4、执行sql             rs = stmt.executeQuery(sql);             return rs.next();         } catch (SQLException e) {             e.printStackTrace();         } finally {             JDBCUtils.close(rs, stmt, conn);         }         return false;     }}

测试一下:

遇见SQL注入应该如何解决


可以看到,普通的检验没有任何问题,现在使用SQL注入:

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。