關於SQL 注入

1 SQL注入案例

案例1:git

某網站後臺管理平臺測試環境 *********:50052/csop/main.dogithub

在登陸界面用戶名輸入 system' or '1'='1 ,密碼隨意輸入.以後輸入驗證碼,點擊登陸,提示登陸出錯,後訪問上方提供的網址.此時以 system身份登陸系統.即完成一次簡單的SQL注入.數據庫

 

2 什麼是SQL注入

所謂SQL注入,就是經過把SQL命令插入到提交或輸入或請求的SQL字符串,最終達到欺騙服務器執行惡意的SQL命令。具體來講,它是利用現有應用程序,將(惡意)的SQL命令注入到後臺數據庫引擎執行的能力,它能夠經過在輸入(惡意)SQL語句獲得一個執行結果,而不是按照設計者意圖去執行SQL語句。編程

在案例1中,經過惡意的SQL注入,登陸管理員帳號,從而提升本身的權限,後臺執行SQL:服務器

從上述SQL中可能很清楚的看明白注入的SQL在密碼錯誤的狀況下是如何登陸system帳號.cookie

 

3 如何防止SQL注入?

測試角度:使用專業的測試工具,及時發現並處理SQL注入問題框架

從網管角度:記錄網站相關登陸信息,及進發現並跟進SQL注入問題工具

從DBA角度:控制執行SQL帳號權限,按期巡檢,能夠在問題出現時極大的下降損失.post

從開發者角度:性能

使用參數化執行SQL,而不是拼接SQL語句的方式執行SQL.除了有效防止SQL注入外,參數化執行SQL具備執行效率高,性能優秀,等各類優勢.強列建議.

對輸入參數(包括不限於:post請求,get請求,cookie注入,c/s 中客戶端請求,等)進行驗證,

重要的操做採用防護式編程思想在服務端執行,牢記任何客戶端都是不可信任的.

出錯後暴露儘量少的錯誤信息,爲SQL注入製造障礙.(好比500錯誤頁面)

(案例1中SQL注入緣由出在框架搭建者未考濾全面致使的)

 

其它資料:

阿里的druid對SQL注入有相關防護措施,能夠參考https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE-wallfilter

相關文章
相關標籤/搜索