什么是SQL注入攻擊?
所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字串,最終達到欺騙服務器執行惡意的SQL命令,具體來說,它是利用現有應用程式,將(惡意)的SQL命令注入到后臺資料庫引擎執行的能力,它可以通過在Web表單中輸入(惡意)SQL陳述句得到一個存在安全漏洞的網站上的資料庫,而不是按照設計者意圖去執行SQL陳述句,[1] 比如先前的很多影視網站泄露VIP會員密碼大多就是通過WEB表單遞交查詢字符暴出的,這類表單特別容易受到SQL注入式攻擊. SQL注入攻擊指的是通過構建特殊的輸入作為引數傳入Web應用程式,而這些輸入大都是SQL語法里的一些組合,通過執行SQL陳述句進而執行攻擊者所要的操作,其主要原因是程式沒有細致地過濾用戶輸入的資料,致使非法資料侵入系統,
正常登錄:
用戶名:admin 密碼:admin
SQL注入漏洞測驗:
-
在正常用戶名admin后增加一個單引號,單擊"登錄"
-
或在URL地址欄直接輸入http://127.0.0.1:8081/login.asp?name=admin'&pass=admin
-
若出錯,證明沒有對'進行過濾,存在SQL注入漏洞
那么如何防范出現這種情況呢,說白了直接獲取字串過濾判斷即可,那么以下就是一個高可用的字串判斷方法,
可以直接使用,
package StrTest;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class demo {
public static void main(String[] args) {
boolean isf = containsSqlInjection("http://127.0.0.1:8081/login?name=admin &pass=admin' and '1=1");
System.out.println(isf?"sql注入攻擊":"安全字串");
}
/**
* 是否含有sql注入,回傳true表示含有
*
* @param obj
* @return
*/
public static boolean containsSqlInjection(Object obj) {
Pattern pattern = Pattern.compile(
"\\b(and|exec|insert|select|drop|grant|alter|delete|update|count|chr|mid|master|truncate|char|declare|or)\\b|(\\*|;|\\+|'|%)");
Matcher matcher = pattern.matcher(obj.toString());
return matcher.find();
}
}
希望能給大家帶來一定的幫助,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/402500.html
標籤:其他
上一篇:物理分頁和邏輯分頁的區別
