欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java防止SQL注入的幾個途徑

  發(fā)布時間:2012-08-10 14:59:58   作者:佚名   我要評論
java防SQL注入,最簡單的辦法是杜絕SQL拼接,SQL注入攻擊能得逞是因為在原有SQL語句中加入了新的邏輯

java防SQL注入,最簡單的辦法是杜絕SQL拼接,SQL注入攻擊能得逞是因為在原有SQL語句中加入了新的邏輯,如果使用PreparedStatement來代替Statement來執(zhí)行SQL語句,其后只是輸入?yún)?shù),SQL注入攻擊手段將無效,這是因為PreparedStatement不允許在不同的插入時間改變查詢的邏輯結(jié)構(gòu) ,大部分的SQL注入已經(jīng)擋住了, 在WEB層我們可以過濾用戶的輸入來防止SQL注入比如用Filter來過濾全局的表單參數(shù) 
01  import java.io.IOException; 
02  import java.util.Iterator; 
03  import javax.servlet.Filter; 
04  import javax.servlet.FilterChain; 
05  import javax.servlet.FilterConfig; 
06  import javax.servlet.ServletException; 
07  import javax.servlet.ServletRequest; 
08  import javax.servlet.ServletResponse; 
09  import javax.servlet.http.HttpServletRequest; 
10  import javax.servlet.http.HttpServletResponse; 
11  /**
12  * 通過Filter過濾器來防SQL注入攻擊
13  *

14  */ 
15  public class SQLFilter implements Filter { 
16  private String inj_str = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|; |or|-|+|,"; 
17  protected FilterConfig filterConfig = null; 
18  /**
19  * Should a character encoding specified by the client be ignored?
20  */ 
21  protected boolean ignore = true; 
22  public void init(FilterConfig config) throws ServletException { 
23  this.filterConfig = config; 
24  this.inj_str = filterConfig.getInitParameter("keywords"); 
25  } 
26  public void doFilter(ServletRequest request, ServletResponse response, 
27  FilterChain chain) throws IOException, ServletException { 
28  HttpServletRequest req = (HttpServletRequest)request; 
29  HttpServletResponse res = (HttpServletResponse)response; 
30  Iterator values = req.getParameterMap().values().iterator();//獲取所有的表單參數(shù) 
31  while(values.hasNext()){ 
32  String[] value = (String[])values.next(); 
33  for(int i = 0;i < value.length;i++){ 
34  if(sql_inj(value[i])){ 
35  //TODO這里發(fā)現(xiàn)sql注入代碼的業(yè)務(wù)邏輯代碼 
36  return; 
37  } 
38  } 
39  } 
40  chain.doFilter(request, response); 
41  } 
42  public boolean sql_inj(String str) 
43  { 
44  String[] inj_stra=inj_str.split("\\|"); 
45  for (int i=0 ; i < inj_stra.length ; i++ ) 
46  { 
47  if (str.indexOf(" "+inj_stra[i]+" ")>=0) 
48  { 
49  return true; 
50  } 
51  } 
52  return false; 
53  } 
54  } 
 
也可以單獨在需要防范SQL注入的JavaBean的字段上過濾: 
1   /**
2   * 防止sql注入
3   *
4   * @param sql
5   * @return
6   */ 
7   public static String TransactSQLInjection(String sql) { 
8   return sql.replaceAll(".*([';]+|(--)+).*", " "); 
9   } 

相關(guān)文章

  • SQL注入黑客防線網(wǎng)站實例分析

    這篇文章主要介紹了SQL注入黑客防線網(wǎng)站實例分析,需要的朋友可以參考下
    2017-05-19
  • ASP+PHP 標準sql注入語句(完整版)

    這里為大家分享一下sql注入的一些語句,很多情況下由于程序員的安全意識薄弱或基本功不足就容易導致sql注入安全問題,建議大家多看一下網(wǎng)上的安全文章,最好的防范就是先學
    2017-05-19
  • mysql 注入報錯利用方法總結(jié)

    這篇文章主要介紹了mysql 注入報錯利用方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2016-10-08
  • SQL注入攻擊(攻擊與防范)

    SQL注入是從正常的WWW端口訪問,而且表面看起來跟一般的Web頁面訪問沒什么區(qū)別,所以目前市面的防火墻都不會對SQL注入發(fā)出警報,如果管理員沒查看IIS日志的習慣,可能被入
    2016-05-21
  • SQL注入測試實例分析

    這篇文章主要為大家介紹了SQL注入測試實例分析,對于數(shù)據(jù)庫安全非常重要,需要的朋友可以參考下
    2014-08-06
  • Sqlmap注入技巧集錦

    sqlmap 是一個自動SQL 射入工具。本文收集了一些利用Sqlmap做注入測試的TIPS,其中也包含一點繞WAF的技巧,便于大家集中查閱,歡迎接樓補充、分享。
    2014-07-29
  • SQL注入攻防入門詳解 [圖文并茂] 附示例下載

    畢業(yè)開始從事winfrm到今年轉(zhuǎn)到 web ,在碼農(nóng)屆已經(jīng)足足混了快接近3年了,但是對安全方面的知識依舊薄弱,事實上是沒機會接觸相關(guān)開發(fā)……必須的各種借口。這幾天把sql注入
    2012-11-06
  • 防止SQL注入攻擊的一些方法小結(jié)

    SQL注入攻擊的危害性很大。在講解其防止辦法之前,數(shù)據(jù)庫管理員有必要先了解一下其攻擊的原理。這有利于管理員采取有針對性的防治措施
    2012-07-10
  • web 頁面 一些sql注入語句小結(jié)

    web 頁面 一些sql注入語句小結(jié),對于開發(fā)人員來說一定要注意的事項。
    2012-03-12
  • 手動mysql 高級注入實例分析

    為了 方便 自己隨手寫了個 sql.php注入點 。經(jīng)典的 id沒有過濾 造成 sql語句帶入?yún)?shù) 形成注入, 對了 大家導入test.sql 這個數(shù)據(jù)庫文件吧
    2010-08-04

最新評論