00310_防止SQL注入

Posted Lamfai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了00310_防止SQL注入相关的知识,希望对你有一定的参考价值。

1、预处理对象

  (1)使用PreparedStatement预处理对象时,建议每条sql语句所有的实际参数,都使用逗号分隔

String sql = "insert into sort(sid,sname) values(?,?)";;
PreparedStatement预处理对象代码:
PreparedStatement psmt = conn.prepareStatement(sql)

  (2)执行SQL语句

int executeUpdate(); --执行insert update delete语句.
ResultSet executeQuery(); --执行select语句.
boolean execute(); --执行select返回true 执行其他的语句返回false

  (3)设置实际参数

    ①void setXxx(int index, Xxx xx) 将指定参数设置为给定Java的xx值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL Xxx类型值;

setString(2, "家用电器") 把SQL语句中第2个位置的占位符? 替换成实际参数 "家用电器"

  (4)代码演示

 1 import java.sql.Connection;
 2 import java.sql.DriverManager;
 3 import java.sql.PreparedStatement;
 4 import java.sql.ResultSet;
 5 import java.util.Scanner;
 6 
 7 public class JDBCDemo3 {
 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         Scanner sc = new Scanner(System.in);
15         String user = sc.nextLine();
16         String pass = sc.nextLine();
17 
18         // 执行SQL语句,数据表,查询用户名和密码,如果存在,登录成功,不存在登录失败
19         String sql = "SELECT * FROM users WHERE username=? AND PASSWORD=?";
20         // 调用Connection接口的方法prepareStatement,获取PrepareStatement接口的实现类
21         // 方法中参数,SQL语句中的参数全部采用问号占位符
22         PreparedStatement pst = con.prepareStatement(sql);
23         System.out.println(pst);
24         // 调用pst对象set方法,设置问号占位符上的参数
25         pst.setObject(1, user);
26         pst.setObject(2, pass);
27 
28         // 调用方法,执行SQL,获取结果集
29         ResultSet rs = pst.executeQuery();
30         while (rs.next()) {
31             System.out.println(rs.getString("username") + "   "
32                     + rs.getString("password"));
33         }
34 
35         rs.close();
36         pst.close();
37         con.close();
38     }
39 }

 

以上是关于00310_防止SQL注入的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis怎么防止SQL注入

mybatis以及预编译如何防止SQL注入

MyBatis怎么防止SQL注入

浅析php过滤html字符串,防止SQL注入的方法

mybatis模糊查询防止SQL注入

struts2怎么防止sql注入