∪∩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 閱讀(1773) 評論(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
          主站蜘蛛池模板: 通河县| 台前县| 华阴市| 临沧市| 凌源市| 中牟县| 咸宁市| 红河县| 乳山市| 万年县| 兴安盟| 略阳县| 潼南县| 广丰县| 康马县| 桐城市| 阜康市| 德庆县| 峨山| 宜章县| 连云港市| 阆中市| 鹿泉市| 南昌县| 什邡市| 庆阳市| 桦川县| 万载县| 达孜县| 马关县| 通江县| 靖边县| 万山特区| 东乡族自治县| 东阿县| 当阳市| 南靖县| 榆社县| 葵青区| 饶平县| 邢台市|