sql 注入式攻擊是指利用設計上的漏洞, 在目標伺服器上執行 sql 命令以及進行其他方式的攻擊, 動態生成 sql 語句時沒有對使用者輸入的資料進行驗證. sql 注入式攻擊是一各常規性的攻擊, 可以允許一些不法使用者檢索他人的資料或改變伺服器的設定或者在他人不小心的時候破壞其伺服器. sql 注入式攻擊不是 sql server 問題, 而是不適當的程式.
要防範 sql 注入式攻擊, 應該注意以下幾點:
(1). 檢查輸入的 sql 語句的內容, 如果包含敏感字元, 則刪除敏感字元, 一般敏感字元包括: ', >, <=, !, -, +, *, /, |, 空格等.
(2). 不要在使用者輸入過程中構造 where 子句, 應該利用引數來使用儲存過程.
因為 sql 注入一般出現在程式開發構造乙個 where 子句伴隨著使用者輸入的時候.
過濾非法字元的兩種方法:
(1). 在 asp.net 可以自定義乙個方法過濾非法字元, 效率較底, 但對敏感字元的過濾比較徹底. 實現如下:
//////防止 sql 注入式攻擊
//////使用者輸入字串
public string convertsql(string inputstring)
(2).由於上面這種列舉的方法對程式效率顯然有影響, 因此並不是最有效的途徑.
其實最佳途徑可以通過 sqlcommandparameners 屬性的引數傳值實現, 將非法字元過濾.
原理是sql 語句在傳送過程中引數(使用者輸入的內容)是不可見的. 自然失去了攻擊的機會.
以登入為例, 實現如下:
public int checklogin(string loginname, string loginpwd)
(3).最實用的方法: 建議大家多寫儲存過程, 它的作用不再僅僅是大家認為的那樣起到提供乙個介面, 提高執行速度等作用, 當今系統對效能和安全的要求已上公升到主要位置.不用擔心過多的建立儲存過程會給伺服器帶來負擔, 也不要認為書寫儲存過程麻煩, 當乙個龐大的系統把大量的時間花在 sql 語句的維護與解析和對系統安全的防範時, 這種麻煩完全是值得的. 最明顯的優點是當你多建乙個儲存過程, 少一句前台 sql 語句時: 便可兼得提高效率與防 sql 注入式攻擊, 何樂而不為呢?
sql防注入防範sql注入式攻擊js版本
asp版的防範sql注入式攻擊 response.write alert 非法位址!response.write location.href error.asp response.write end if 以下是較為簡單的防範方法,這些都是大家比較熟悉的方法,我就是 過來。希望能給你一點幫助 主要是...
SQL注入式攻擊
常見的sql注入式攻擊過程類如 某個asp.net web應用有乙個登入頁面,這個登入頁面控制著使用者是否有權訪問應用,它要求使用者輸入乙個名稱和密碼。登入頁面中輸入的內容將直接用來構造動態的sql命令,或者直接用作儲存過程的引數。下面是asp.net應用構造查詢的乙個例子 system.text....
SQL注入式攻擊
1 為什麼會存在這種攻擊方式?大多數的b s系統或者c s系統,都會涉及到資料的儲存和互動,資料一般儲存在sql server mysql等資料庫中。因此,常見的資料互動中,往往需要根據使用者輸入的資訊進行資料庫查詢等操作 1 使用者登入,需要根據使用者填寫的使用者名稱和密碼查詢資料庫進行校驗。2 ...