<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    細心!用心!耐心!

    吾非文人,乃市井一俗人也,讀百卷書,跨江河千里,故申城一游; 一兩滴辛酸,三四年學(xué)業(yè),五六點粗墨,七八筆買賣,九十道人情。

    BlogJava 聯(lián)系 聚合 管理
      1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks
     
    下面是自己以前初學(xué)JDBC時候?qū)懙拇a,存在sql注入漏洞。
    不安全因素:statement。。。應(yīng)該用Preparedstatement來代替statement,這樣我們就可以使用占位符作為實參來定義sql語句,從而避免sql注入的攻擊。
            當(dāng)然也可以用statement,你得注意你的sql的寫法,要是下例肯定不行。還得對url惡意傳入?yún)?shù)進行過濾(SQL元字符處理)。。。這樣就比較麻煩了,而且也無法保證絕對的安全。
            我們在用hibernate等框架的時候(hql語句),避免sql注入攻擊也是一樣的,關(guān)鍵是不要用string來構(gòu)造sql語句,不管什么框架,還是純JDBC,只要用Preparedstatement就OK。。。一定要用占位符作為實參來構(gòu)造sql(或hql)語句。
    package cn.zhd;
    import java.io.*;
    import org.apache.log4j.*;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.ResultSet;

    public class LoginDemo {
        
        public void execute(String user,String pass){
            boolean foo=false;
            try{
                Class.forName("com.mysql.jdbc.Driver");
                Connection con=DriverManager.getConnection("jdbc:mysql://localhost/students","root","");
                Statement stam=con.createStatement();
                //存在注入攻擊漏洞:select * from login where user='' or'x'='x' or 'x'='' and '1'
                ResultSet rs=stam.executeQuery("select * from login where user='" + user + "' and pass='"+ pass + "'");
                while(rs.next()){

                        foo=true;
                    
                }
                if(foo){
                    System.out.println("登陸成功");
                }
                else
                {
                    System.out.println("用戶名密碼錯誤");
                }

            }catch(ClassNotFoundException e){
                e.printStackTrace();
            }catch(SQLException e){
                e.printStackTrace();
            }
            
        }
        public static void main(String[] args){
            Logger log=Logger.getLogger(LoginDemo.class);
            try{
                LoginDemo ld=new LoginDemo();
                BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
                log.info("請輸入用戶名");
                String bf_str=bf.readLine();
                log.info("請輸入密碼");
                String bf2_str=bf.readLine();
                bf.close();
                ld.execute(bf_str,bf2_str);
            }catch(IOException e){
                e.printStackTrace();
            }
            
        }
    }

    當(dāng)輸入用戶名的時候輸入:' or 'x'='x' or '2'='
    密碼隨便輸.....
    成功登陸了吧.....
    posted on 2007-04-20 13:51 張金鵬 閱讀(359) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫編程
    主站蜘蛛池模板: 亚洲午夜无码久久久久软件| 成人黄软件网18免费下载成人黄18免费视频| 免费A级毛片在线播放| 日韩亚洲国产二区| 国产成人免费高清激情明星| 国产国拍精品亚洲AV片| 国产精品亚洲专区无码牛牛| 日本免费人成黄页网观看视频| 亚洲三级视频在线| 午夜无码A级毛片免费视频| 久久精品国产亚洲综合色| 黄色网页在线免费观看| 亚洲精品~无码抽插| 24小时免费看片| 亚洲性无码一区二区三区| 全亚洲最新黄色特级网站 | 亚洲日产2021三区| 亚洲成年人免费网站| 亚洲理论片中文字幕电影| 国产一卡二卡3卡四卡免费| 亚洲日韩乱码中文字幕| 午夜亚洲av永久无码精品| 一个人看的www免费高清| 亚洲AV无码乱码在线观看富二代| 免费人成视频在线观看网站| 亚洲无线一二三四区| 四虎免费永久在线播放| 国产一级一毛免费黄片| 亚洲精品第五页中文字幕| 噼里啪啦电影在线观看免费高清| 亚洲国产精品无码久久九九大片| 免费大黄网站在线看| 国产无遮挡裸体免费视频在线观看 | 99热在线精品免费播放6| 亚洲无圣光一区二区| 四虎影视精品永久免费网站| 日韩av无码免费播放| 亚洲黄色激情视频| 亚洲人成网站18禁止一区 | 黄网站免费在线观看| 亚洲中文无码卡通动漫野外|