如何防止SQL注入式攻擊?

2021-09-20 01:41:46 字數 1058 閱讀 2538

所謂sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。

通過一下的例子更形象的了解sql注入:

有乙個login畫面,在這個login畫面上有兩個文字框分別用來輸入使用者名稱和密碼,當使用者點了登入按鈕的時候,會對輸入的使用者名稱和密碼進行驗證。驗證的sql語句如下:

select * from student where username='輸入的使用者名稱' and password='輸入的密碼'如果能夠檢索到資料,說明驗證通過,否則驗證不通過。

如果使用者在使用者名稱文字框中輸入 ' or '1' = '1' or '1' = '1,則驗證的sql語句變成:

select * from student where username='' or '1' = '1' or '1' = '1' and password=''

如果使用者在密碼文字框中輸入 1' or '1' = '1,則驗證的sql語句變成:

select * from student where username='' and password='1' or '1'='1'

以上兩個sql語句的where條件永遠是成立的,所以驗證永遠是有效的。

如果在使用者名稱文字框中輸入  tom' ; drop table student-- ,則sql語句變成:

select * from student where username='tom' ; drop table student--' and password=''這樣就變成的兩條sql語句,執行完查詢操作,接著直接把student表給刪除了(雙連線符表示注釋)

如何防止sql注入:

永遠不要信任使用者的輸入。對使用者的輸入進行校驗,可以通過正規表示式,或限制長度;對單引號和雙"-"進行轉換等。永遠不要使用動態拼裝sql,可以使用引數化的sql或者直接使用儲存過程進行資料查詢訪問永遠不要使用管理員許可權的資料庫連線,為每個應用使用單獨的許可權有限的資料庫連線不要把機密資訊直接存放,加密或者hash掉密碼和敏感的資訊應用的異常資訊應該給出盡可能少的提示,最好使用自定義的錯誤資訊對原始錯誤資訊進行包裝採用一些工具或網路平台檢測是否存在sql注入

防止SQL注入式攻擊

防止sql注入式攻擊 sql注入式攻擊是指利用設計上的漏洞攻擊系統。如果動態生成sql語句時沒有對使用者輸入的資料 進行過濾,便會使sql注入式攻擊得逞。例如用下面的sql語句判斷使用者名稱和密碼 txtsql select from user info where userid txtuserid...

PHP如何防止SQL注入式攻擊

由於程式開發人員對程式中的一些資料型別沒有經過檢查 向 mysql 提交正確的資料型別以及特殊資料的轉義,導致程式容易受sql注入式攻擊。就此,php對此已提供了安全的設定及內建函式來防止此問題的發生。以下就個人在開發應用中寫點.1 magic quotes runtime設定 當它開啟時,php的...

PHP如何防止SQL注入式攻擊

方法1 由於程式開發人員對程式中的一些資料型別沒有經過檢查 向 mysql 提交正確的資料型別以及特殊資料的轉義,導致程式容易受sql注入式攻擊。就此,php對此已提供了安全的設定及內建函式來防止此問題的發生。以下就個人在開發應用中寫點.1 magic quotes runtime 設定 當它開啟時...