防止SQL注入解決方案

 防止SQL注入解決方案java

在人員開發培訓要最好玉先這樣實施安全流程,可最大可能的減小這方面的問題……sql

STEP1:在設計方案上,採用參數化查詢,如如下爲JAVA爲例:數據庫

String sql = "update  carinf set level_id=? where id=?";安全

PreparedStatement ps = con.prepareStatement(sql);ide

ps.setString(1, newids);工具

ps.setInt(2, selectid);測試

儘量不使用拼接SQL的形式……。spa

若是必須採用拼接SQL時,若是參數爲字串,須要進行轉義,轉義字符根據數據庫的不一樣而有所差異……能夠打開數據庫驅動源碼,能夠看到所有的轉義字符……若是參數爲數字,則簡單的判斷下類型就能夠了設計

if(!check.isNumeric(id))開發

throw new RuntimeException(" Id is not int ");

 

ps = conn.prepareStatement("select * from region where id = ‘"+ id+」’」);

rs = ps.executeQuery();

通常狀況下,爲了提升開發速度,只對用戶URL作這樣的設計,管理員使用的頁面URL能夠忽略。

STEP2:注入檢測,這裏以JAVA程序爲例,測試工具爲ECLIPSE

用IDE搜索JAVA文件內"update "/"insert "/"delete "、「select 」等SQL關鍵字…,查看源碼是否用了SQL拼接。

STEP3:檢測結果紀錄表,主要記錄如下內容

文件:/ebao/src/com/ebao/dao/CustomerDao.java   

總數:2個

行:Line68   

功能:郵相激活賬號

修復結果:fixed

複測結果:ok

STEP4: 根據檢測結果作修復,在紀錄表上記錄修復結果

STEP5:複測,在紀錄表上記錄複測結果

相關文章
相關標籤/搜索