∪∩deniable Design

个人JAVA版GAE(google app engine),struts2+jpa+jQuery开发,互相交流 http://iunbug.appspot.com/
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

[简单]Java连接MySQL及防SQL注入

Posted on 2008-07-27 18:08 ∪∩BUG 阅读(1731) 评论(0)  编辑  收藏 所属分类: JSP学习笔记
(1)SQL注入获取用户密码:
1select * from student where Sno='0605030320' or '1'='1' and password='abc'
(2)设置参数在底层防止注入
 1/**
 2 * 
 3 */

 4package user.DAO;
 5
 6import java.sql.*;
 7
 8import user.entity.User;
 9
10/**
11 * 用户数据访问层
12 * @author Administrator
13 *@version 1.0
14 *日期2008 07 24
15 */

16public class UserDAO {
17    /**
18     * 根据用户名和密码查找用户,找到了返回 user 对象,否则返回 null
19     * @param(参量) user
20     */

21    public findUserByUsernamePassword(User user){
22        // 1.注册驱动
23        try {
24            Class.forName("com.mysql.jdbc.Driver");
25        }
 catch (ClassNotFoundException e) {
26            // TODO Auto-generated catch block
27            e.printStackTrace();
28        }
//mysql驱动
29        
30        java.sql.Connection conn = null;
31        PreparedStatement pstmt = null;    
32        ResultSet rs = null;
33        
34        try {
35            //2.获取数据库的连接(接数据库)
36            conn = java.sql.DriverManager.getConnection(
37                    "jdbc:mysql://localhost/stums?useUnicode=true&characterEncoding=GBK","root","admin");
38            
39            //执行SQL
40            pstmt = conn.prepareStatement("select * from student where Sno =? and Password = ?");
41            
42            //设置参数防止SQL注入
43            pstmt.setString(1, user.getUsername());
44            pstmt.setString(2, user.getPassword());
45            
46            //获取数据集
47            rs = pstmt.executeQuery();
48            
49            if(rs != null && rs.next()){
50                user.setId(rs.getInt("Sno"));
51                return user;
52            }

53            
54        }
 catch (SQLException e) {
55            // TODO Auto-generated catch block
56            e.printStackTrace();
57        }
finally{    //释放资源
58            try {
59                rs.close();     //关闭数据集
60            }
 catch (Exception e) {
61                // TODO Auto-generated catch block
62                e.printStackTrace();
63            }

64            try {
65                pstmt.close();    //关闭表连接
66            }
 catch (Exception e) {
67                // TODO Auto-generated catch block
68                e.printStackTrace();
69            }

70            try {
71                conn.close();    //关闭数据库连接
72            }
 catch (Exception e) {
73                // TODO Auto-generated catch block
74                e.printStackTrace();
75            }

76        }

77        
78        return null;
79        
80        
81    }

82
83}

84

只有注册用户登录后才能发表评论。


网站导航: