您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關什么方法能夠有效應對SQL注入攻擊,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
能夠有效應對SQL注入攻擊的方法是:PreparedStatement(預編譯語句集)。預編譯語句集內置了處理SQL注入的能力,我們只需要使用它的setxxx方法傳值即可。
1、(簡單又有效的方法)PreparedStatement
采用預編譯語句集,它內置了處理SQL注入的能力,只要使用它的setXXX方法傳值即可。
使用好處:
(1)代碼的可讀性和可維護性.
(2)PreparedStatement盡最大可能提高性能.
(3)最重要的一點是極大地提高了安全性.
原理:
sql注入只對sql語句的準備(編譯)過程有破壞作用,而PreparedStatement已經準備好了,執行階段只是把輸入串作為數據處理,而不再對sql語句進行解析、準備,因此也就避免了sql注入問題。
2、使用正則表達式過濾傳入的參數
要引入的包:
import java.util.regex.*;
正則表達式:
private String CHECKSQL = “^(.+)\\sand\\s(.+)|(.+)\\sor(.+)\\s$”;
判斷是否匹配:
Pattern.matches(CHECKSQL,targerStr);
下面是具體的正則表達式:
檢測SQL meta-characters的正則表達式 : /(\%27)|(\')|(\-\-)|(\%23)|(#)/ix
修正檢測SQL meta-characters的正則表達式 : /((\%3D)|(=))[^\n]*((\%27)|(\')|(\-\-)|(\%3B)|(:))/i
典型的SQL 注入攻擊的正則表達式 : /\w*((\%27)|(\'))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix
檢測SQL注入,UNION查詢關鍵字的正則表達式 : /((\%27)|(\'))union/ix(\%27)|(\')
檢測MS SQL Server SQL注入攻擊的正則表達式: /exec(\s|\+)+(s|x)p\w+/ix
等等…..
3、字符串過濾
比較通用的一個方法:
(||之間的參數可以根據自己程序的需要添加)
public static boolean sql_inj(String str){ String inj_str = "'|and|exec|insert|select|delete|update| count|*|%|chr|mid|master|truncate|char|declare|;|or|-|+|,"; String inj_stra[] = split(inj_str,"|"); for (int i=0 ; i < inj_stra.length ; i++ ){ if (str.indexOf(inj_stra[i])>=0){ return true; } } return false; }
4、jsp中調用該函數檢查是否包函非法字符
防止SQL從URL注入:
sql_inj.java代碼:
package sql_inj; import java.net.*; import java.io.*; import java.sql.*; import java.text.*; import java.lang.String; public class sql_inj{ public static boolean sql_inj(String str){ String inj_str = "'|and|exec|insert|select|delete|update| count|*|%|chr|mid|master|truncate|char|declare|;|or|-|+|,"; //這里的東西還可以自己添加 String[] inj_stra=inj_str.split("\\|"); for (int i=0 ; i < inj_stra.length ; i++ ){ if (str.indexOf(inj_stra[i])>=0){ return true; } } return false; } }
上述就是小編為大家分享的什么方法能夠有效應對SQL注入攻擊了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。