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

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

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

    每天進步一點點

    單車周末
    posts - 3, comments - 0, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    2011年5月11日

    創建用戶:   public Long createTempUser(TempUser user) {
            TempUser tempuser = this.findTempUserByName(user.getYhm());
            user.setMm(createEncryptPSW(user.getMm().trim()));  
    //生成加密密碼
            if (tempuser != null) {
                user.setId(tempuser.getId());
                
    this.getHibernateTemplate().merge(user);
            } 
    else {
                
    this.getHibernateTemplate().saveOrUpdate(user);
            }
            
    return user.getId();
        }
    createEncryptPSW(加密方法): private String createEncryptPSW(String psw) {
            MessageDigest messagedigest;
            
    try {
                messagedigest 
    = MessageDigest.getInstance("MD5");
                messagedigest.update(psw.getBytes(
    "UTF8"));
                
    byte abyte0[] = messagedigest.digest();
                
    return (new BASE64Encoder()).encode(abyte0);
            } 
    catch (Exception e) {
                
    throw new RuntimeException("加密失敗:" + e.getMessage());
            }
        }
    登錄(解密):   
     public Long userCer(String userName, String password) {
            TempUser user 
    = this.findTempUserByName(userName);
            
    if (null == user) return 0L;
            
    boolean flag = createEncryptPSW(password.trim()).equals(user.getMm());
            
    if (flag) return user.getId();
            
    return 0L;
        }




    posted @ 2011-05-11 15:46 MyOracleX 閱讀(151) | 評論 (0)編輯 收藏

    2011年5月9日

        只有注冊用戶登錄后才能閱讀該文。閱讀全文

    posted @ 2011-05-09 23:44 MyOracleX 閱讀(68) | 評論 (0)編輯 收藏

    2010年11月23日

    SQL注射原理

    SQL 注射能使攻擊者繞過認證機制,完全控制遠程服務器上的數據庫。SQL是結構化查詢語言的簡稱,它是訪問數據庫的事實標準。目前,大多數Web應用都使用 SQL數據庫來存放應用程序的數據。幾乎所有的Web應用在后臺都使用某種SQL數據庫。跟大多數語言一樣,SQL語法允許數據庫命令和用戶數據混雜在一 起的。如果開發人員不細心的話,用戶數據就有可能被解釋成命令,這樣的話,遠程用戶就不僅能向Web應用輸入數據,而且還可以在數據庫上執行任意命令了。
    登陸驗證
    現 在以一個需要用戶身份認證的簡單的Web應用程序為例進行講解。假定這個應用程序提供一個登錄頁面,要求用戶輸入用戶名和口令。用戶通過HTTP請求發送 他們的用戶名和口令,之后,Web應用程序檢查用戶傳遞來用戶名和口令跟數據庫中的用戶名和口令是否匹配。這種情況下,會要求在SQL數據庫中使用一個數 據庫表。
    對一個用戶進行認證,實際上就是將用戶的輸入即用戶名和口令跟表中的各行進行比較,如果跟某行中的用戶名和口令跟用戶的輸入完全匹配,那么該用戶就會通過認證。
    假如后臺的sql語句時這樣拼接的
    select id from test where username='"+myname+"' and password='"+mypasswd+"' ";
    表面上看,如果用戶名和口令對匹配,那么該用戶通過認證;否則,該用戶不會通過認證——但是,事實果真如此嗎?非也!讀者也許已經注意到了,這里并沒有對SQL命令進行設防,所以攻擊者完全能夠在用戶名或者口令字段中注入SQL語句,從而改變SQL查詢 。為此,我們仔細研究一下上面的SQL查詢字符串:
    上述代碼認為字符串username和password都是數據,不過,攻擊者卻可以隨心所欲地輸入任何字符 。如果一位攻擊者輸入的用戶名為
    ’OR1=1—
    而口令為
    x
    雙劃符號--告訴SQL解析器,右邊的東西全部是注釋,所以不必理會。這樣,查詢字符串相當于:
    select id from test where username='' or 1=1;
    如 今的SELECT語句跟以前的已經大相徑庭了,因為現在只要用戶名為長度為零的字符串''或1=1這兩個條件中一個為真,就返回用戶標識符ID——我們知 道,1=1是恒為真的。所以這個語句將返回user_table中的所有ID。在此種情況下,攻擊者在username字段放入的是SQL指令 'OR1=1--而非數據。
    更為嚴重的情況是當username對應的是'OR1=1;DROPTABLEuser_table;--
    數據庫中執行的sql語句就變成了:
    select id from test where username='' or 1=1;drop table test
    這個語句將執行句法上完全正確的SELECT語句,并利用drop命令清空test表。
    應對策略
    問題的關鍵就是不要用string構造sql語句,這樣就不會利用輸入的參數構造sql語句了。所以要用PreparedStatement替換Statement,即用占位符作為實參定義sql語句,從而避免sql注入攻擊。
    不管什么框架,還是純JDBC,只用Preparedstatement,一定要用占位符作為實參來構造sql(或hql)語句。

    String sql= "select * from test where usernmae=? and password=? " ;
    PreparedStatement psm=conn.preparedStatement(sql);
    psm.setString(1,myname);
    psm.setString(2,mypasswd);
    Result rs=psm.executeQuery();

    if (rs.next){
    rs.close();
    con.close();
    return false ;
    }
    else {
    rs.close();
    con.close();
    return true ;
    }

    posted @ 2010-11-23 17:33 MyOracleX 閱讀(1138) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲xxxx18| 杨幂最新免费特级毛片| 成人免费无码大片a毛片软件| 粉色视频成年免费人15次| 亚洲开心婷婷中文字幕| 97视频热人人精品免费| GOGOGO高清免费看韩国| 久久精品国产亚洲av麻豆蜜芽| www亚洲一级视频com| 5g影院5g天天爽永久免费影院| 亚洲av无码无线在线观看| 久久精品国产亚洲AV网站| 蜜臀91精品国产免费观看 | 一级毛片高清免费播放| 亚洲美女自拍视频| 亚洲AV无码一区二三区 | 在线观看人成视频免费无遮挡 | 亚洲人成电影在线天堂| 国产乱色精品成人免费视频| 美女内射无套日韩免费播放| 美女黄网站人色视频免费| 亚洲国产综合在线| 亚洲国产精品VA在线看黑人| 国产又大又黑又粗免费视频 | 日本牲交大片免费观看| 免费无遮挡无码永久视频| 特级aa**毛片免费观看| 亚洲黄页网在线观看| 亚洲大尺度无码专区尤物| 免费国产成人高清在线观看麻豆| 最近中文字幕免费完整| 韩国免费A级毛片久久| 国产精品亚洲小说专区| 亚洲综合色区中文字幕| 亚洲伊人tv综合网色| 亚洲综合熟女久久久30p| 人人狠狠综合久久亚洲高清| 成人男女网18免费视频| 麻豆国产精品免费视频| 美丽姑娘免费观看在线观看中文版 | 亚洲a一级免费视频|