防範SQL Server注入攻擊

2021-12-29 21:05:56 字數 1239 閱讀 2273

sql 注入式攻擊是指利用設計上的漏洞攻擊系統,如果動態生成sql 語句時沒有對使用者輸入的資料進行過濾,便會使sql 注入攻擊得逞.

例如:用下面的sql 語句判斷使用者名稱和密碼:

txtsql = "select * from user_info where user_id = '" &txtusername.text & "'and 密碼='"+txtpassword.text &"'",cnn,adopenkeyset,adlockoptimistie

則通過sql 注入攻擊,在"密碼"文字框中輸入1'or'1'='1,非法使用者便額可在沒有密碼的情況下輕鬆登陸系統,因為sql 語句變成了:

txtsql = "select * from user_info where user_id = '" &txtusername.text & "'and 密碼='"   &  1'or'1'='1 & "'" ,cnn,adopentkeyset,adlockoptimistie

因為1'or'1'='1 是乙個為真的語句,那麼那句select語句就變成了,txtsql = "select * from user_info",查詢出來全部的資訊,所以就可以在沒有密碼的 情況下也可以成功登陸系統.

關於更多的sql 注入攻擊語句,請看我**的部落格,

要犯法sql 注入攻擊,應該注意一下幾個問題:

1要檢查輸入的sql 語句的內容,如果包含敏感字元,則刪除敏感字元,敏感字元包括'  ,   > , <=,, ! ,, - , + ,  * ,  /,   () ,   | 和空格

2不要在使用者輸入過程中構造where子句,應該利用引數來使用儲存過程.  

防範sql 注入式攻擊:

(1)編寫過濾敏感字元的函式,函式如下

把select 查詢語句改為:

txtsql = "select * from user_info where user_id = '" &txtusername.text & "'and 密碼='"+inputstring(txtpassword.text) &"'",cnn,adopenkeyset,adlockoptimistie

使用該函式後,非法使用者就不能非法登陸系統了!

(2) 通過儲存過程過濾敏感字元

首先在sql server 中定義儲存過程xtdl,然後再在程式設計中編寫**:

這是兩種防範sql 注入攻擊的防範,希望能幫組到你.在以後的資料庫操作中,我們肯定會遇到這樣的問題,有問題就肯定會有解決的方案的!

作者 唐歡

防範SQL注入式攻擊

拷貝別人的 sql注入式攻擊是利用是指利用上的漏洞,在目標伺服器上執行 sql命令以及進行其他方式的攻擊 動態生成 sql命令時沒有對使用者輸入的資料進行驗證是 sql注入攻擊得逞的主要原因。比如 如果你的查詢語句是select fromadminwhereusername user andpass...

防範Sql注入式攻擊

sql注入式攻擊是指利用設計上的漏洞,在目標伺服器上執行sql 命令以及進行其他方式的攻擊 string name getuserinput bookname string script select table book where book name like name runsql scrip...

防範Sql注入式攻擊

sql注入式攻擊是指利用設計上的漏洞,在目標伺服器上執行sql 命令以及進行其他方式的攻擊 string name getuserinput bookname string script select table book where book name?like?n name runsql scr...