防止sql注入的方法
防止sql注入從前端的頁面到后臺可以分為以下幾個辦法:
1.在前端頁面就可以用js過濾數據
要引入的包:
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?
2.后臺可以使用預編譯,參數化查詢的方法防止sql注入
采用預編譯語句集,它內置了處理SQL注入的能力,只要使用它的setXXX方法傳值即可。
使用好處:
(1).代碼的可讀性和可維護性.
(2).PreparedStatement盡最大可能提高性能.
(3).最重要的一點是極大地提高了安全性.
原理:
sql注入只對sql語句的準備(編譯)過程有破壞作用
而PreparedStatement已經準備好了,執行階段只是把輸入串作為數據處理,
而不再對sql語句進行解析,準備,因此也就避免了sql注入問題.?
3.對密碼一類敏感的信息不要直接明文存儲,可以采用MD5或hash加密
4.異常信息不要直接拋出給用戶,最好自定義處理異常信息的類,因為異常信息里也包括關于服務器的一些信息可能被利用。
轉載于:https://www.cnblogs.com/blythe/p/7434753.html
總結
以上是生活随笔為你收集整理的防止sql注入的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: scikit_learn 官方文档翻译(
- 下一篇: java 格式化时间计算