防范sql注入式攻击(Java字符串校验,高可用性)
生活随笔
收集整理的這篇文章主要介紹了
防范sql注入式攻击(Java字符串校验,高可用性)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是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();}}希望能給大家帶來一定的幫助。
總結
以上是生活随笔為你收集整理的防范sql注入式攻击(Java字符串校验,高可用性)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络——详解
- 下一篇: 【蓝桥杯Java_C组·从零开始卷】第五