当前位置:Gxlcms > 数据库问题 > 00309_SQL注入问题

00309_SQL注入问题

时间:2021-07-01 10:21:17 帮助过:9人阅读

* FROM 用户表 WHERE NAME = 用户输入的用户名 AND PASSWORD = 用户输的密码;

  (2)此时,当用户输入正确的账号与密码后,查询到了信息则让用户登录;

  (3)但是当用户输入的账号为XXX 密码为:XXX‘ OR ‘a’=’a时,则真正执行的代码变为:

SELECT * FROM 用户表 WHERE NAME = ‘XXX’ AND PASSWORD =’ XXX’  OR ’a’=’a’;

  (4)此时,上述查询语句时永远可以查询出结果的。那么用户就直接登录成功了,显然我们不希望看到这样的结果,这便是SQL注入问题。

2、案例演示

  (1)创建表

CREATE TABLE users(
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(100),
    PASSWORD VARCHAR(100)
);

  (2)插入数据

INSERT INTO users (username,PASSWORD) VALUES (a,1),(b,2);

  (3)查询表数据

SELECT * FROM users;

  (4)登录查询

    ①正常查询

SELECT * FROM users WHERE username=a AND PASSWORD=1

    ②账号随意写,1=1为true

SELECT * FROM users WHERE username=dsfsdfd AND PASSWORD=wrethiyu 
OR 1=1

  (5)代码演示

 1 import java.sql.Connection;
 2 import java.sql.DriverManager;
 3 import java.sql.ResultSet;
 4 import java.sql.Statement;
 5 import java.util.Scanner;
 6 
 7 public class JDBCDemo2 {
 8     public static void main(String[] args) throws Exception {
 9         Class.forName("com.mysql.jdbc.Driver");
10         String url = "jdbc:mysql://localhost:3306/mybase";
11         String username = "root";
12         String password = "root";
13         Connection con = DriverManager.getConnection(url, username, password);
14         Statement stat = con.createStatement();
15 
16         Scanner sc = new Scanner(System.in);
17         String user = sc.nextLine();
18         String pass = sc.nextLine();
19 
20         // 执行SQL语句,数据表,查询用户名和密码,如果存在,登录成功,不存在登录失败
21         // String sql =
22         // "SELECT * FROM users WHERE username=dsfsdfd AND PASSWORD=wrethiyu OR 1=1";
23         String sql = "SELECT * FROM users WHERE username=" + user
24                 + " AND PASSWORD=" + pass + "";
25         System.out.println(sql);
26         ResultSet rs = stat.executeQuery(sql);
27         while (rs.next()) {
28             System.out.println(rs.getString("username") + "   "
29                     + rs.getString("password"));
30         }
31 
32         rs.close();
33         stat.close();
34         con.close();
35     }
36 }

  运行结果:

  技术分享图片

 

00309_SQL注入问题

标签:sel   nec   manager   用户输入   rgs   for   from   style   user   

人气教程排行