1、sql注入攻擊:
由於dao中執行的sql語句是拼接出來的,其中有一部分內容是由使用者從客戶端傳入,所以當使用者傳入的資料中包含sql關鍵字時,就有可能通過這些關鍵字改變sql語句的語義,從而執行一些特殊的操作,這樣的攻擊方式就叫做sql注入攻擊
preparedstatement利用預編譯的機制將sql語句的主幹和引數分別傳輸給資料庫伺服器,從而使資料庫分辨的出哪些是sql語句的主幹哪些是引數,這樣一來即使引數中帶了sql的關鍵字,資料庫伺服器也僅僅將他當作引數值使用,關鍵字不會起作用,從而從原理上防止了sql注入的問題
preparedstatement主要有如下的三個優點:
1.可以防止sql注入
2.由於使用了預編譯機制,執行的效率要高於statement
3.sql語句使用?形式替代引數,然後再用方法設定?的值,比起拼接字串,**更加優雅.
preparedstatement 與statment比較
1)語法不同:preparedstatement可以使用預編譯的sql,而statment只能使用靜態的sql
2)效率不同:preparedstatement可以使用sql快取區,效率比statment高
3)安全性不同:preparedstatement可以有效防止sql注入,而statment不能防止sql注入。
/*** preparedstatement執行sql語句
* * */
public
class
demo1
catch
(exception e)
finally
}/*** 修改
*/@test
public
void
testupdate()
catch
(exception e)
finally
}/*** 刪除
*/@test
public
void
testdelete()
catch
(exception e)
finally
}/*** 查詢
*/@test
public
void
testquery()
} catch
(exception e)
finally
}}
eg:模擬登陸
/*** 模擬使用者登入效果
* * */
public
class
demo2
else
} catch
(exception e)
finally
}/*** preparedstatement可以有效地防止sql被注入
*/@test
public
void
testbypreparedstatement()
else
} catch
(exception e)
finally
}}
注入攻擊之sql注入
在1998年,一位名為rfp的黑客發表了一篇題為 nt web technology vulnerabilities 的文章 注入攻擊的兩個條件 1 使用者能夠克制資料的輸入 在這裡,使用者能夠控制變數 2 原本要執行的 憑藉了使用者的輸入 一般輸入乙個 單引號就能引起執行查詢語句的語法錯誤,有些伺...
sql防注入防範sql注入式攻擊js版本
asp版的防範sql注入式攻擊 response.write alert 非法位址!response.write location.href error.asp response.write end if 以下是較為簡單的防範方法,這些都是大家比較熟悉的方法,我就是 過來。希望能給你一點幫助 主要是...
ASP 防 SQL 注入攻擊通用程式
sql 注入被那些菜鳥級別的所謂黑客高手玩出了滋味,發現現在大部分黑客入侵都是基於sql注入實現的,哎,誰讓這個入門容易呢,好了,不說廢話了,現在我開始說如果編寫通用的sql防注入程式一般的http請求不外乎get 和 post,所以只要我們在檔案中過濾所有 post 或者 get 請求中的引數資訊...