1. 定義:
所謂SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入欄位名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令。
2. 防止SQL注入的方法:
A:使用PreparedStatement代替Statement
1)使用PreparedStatement 比Statement的代碼的可讀性和可維護性更好.
2)PreparedStatement盡最大可能提高效能.
3)最重要的一點是PreparedStatement極大地提高系統的安全性.
sql="select * from admin where username=? and password=?"; PreparedStatement psmt= con.prepareStatement(sql); psmt.setString(1,username); psmt.setString(2,password); ResultSet rs = psmt.executeQuery(); if(rs.next){ rs.close(); con.close(); return false; } else{ rs.close(); con.close(); return true; }
B: 使用字串過濾
public static String filterContent(String content){ String flt ="'|and|exec|insert|select|delete|update|count|*|% |chr|mid|master|truncate|char|declare|;|or|-|+|,"; Stringfilter[] = flt.split("|"); for(int i=0;i<filter.length ; i++) { content.replace(filter[i], ""); } return content; }
或者使用Filter來過濾全域的表單參數。