防止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:複測,在紀錄表上記錄複測結果