溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

認識安全測試之SQL注入

發(fā)布時間:2020-07-06 00:20:24 來源:網絡 閱讀:1115 作者:平山 欄目:安全技術

前言

在桌面軟件的客戶查詢輸入框輸入特殊字符,居然發(fā)現(xiàn)有sql注入漏洞。所以,決定把這個知識點捋一捋。

 

什么是SQL注入

提起概念,直接拿百度百科的解釋先有個初步理解吧。


摘自百度百科:

“所謂SQL注入式×××,就是輸入域或頁面請求的查詢字符串,欺騙服務器執(zhí)行惡意的SQL命令。在某些表單中,用戶輸入的內容直接用來構造(或者影響)動態(tài)SQL命令,或作為存儲過程的輸入參數,這類表單特別容易受到SQL注入式×××?!?/span>


從上面的解釋不難發(fā)現(xiàn),SQL注入就是通過構造特定的輸入,提交到服務器后,欺騙服務器執(zhí)行惡意的SQL命令,這是從×××者角度考慮的。如果是從防御者角度,在產品發(fā)布前就需要進行安全測試,對可能存在SQL的漏洞進行排查、修復。

 

快速理解SQL注入

上面的概念化,可能還會覺得茫然,好吧,那我們就用簡潔、直觀的圖表進一步描述SQL注入是如何進行欺騙的。

首先我們以51cto的登錄界面作為例子,看一個正常的登錄場景:

認識安全測試之SQL注入

為了描述sql注入的概念,現(xiàn)在我們把這個登錄的處理邏輯簡化。假如我們輸入用戶名pingshan和密碼1111,點擊登錄按鈕后,后臺服務器會執(zhí)行如下sql語句:

Select count(*) from user where user_name=’pingshan’ and pass_word =’1111’

如果返回值為空,則登錄成功。

 

現(xiàn)在假設存在sql注入漏洞,用戶名輸入pingshan';--,如圖所示:

認識安全測試之SQL注入

當我們點擊登錄按鈕進行提交后,后臺服務器進行拼串,執(zhí)行的sql語句將是這樣的:

Select count(*) from user where user_name=’pingshan’;--’ and pass_word =’1111’

 

有沒發(fā)現(xiàn)?!后面的密碼條件直接被注釋掉了(-- 注釋符號),就是說,只有知道任意一個用戶名,就可以無密登錄了,多可怕!

 

如何防止SQL注入

防止SQL注入的思路有以下幾點:

1. 對用戶的輸入進行校驗,可以通過正則表達式、限制長度、對單引號和雙"-"等特殊字符進行轉換;

2. 使用參數化的sql或直接使用存儲過程進行數據查詢存取,避免使用動態(tài)拼裝sql;

3. 為每個應用配置權限有限的數據庫連接,避免使用管理員權限的數據庫連接;

4. 對重要或機密信息進行加密后存儲;

5. 異常信息給盡可能少的提示,最好使用自定義的錯誤信息對原始錯誤信息進行包裝;

 

如何進行SQL注入檢測

SQL注入檢測一般采用工具進行自動化檢測,而且這方面的工具比較多,介紹其中2個:

sqlmap:一個非常強大的sql注入檢測與輔助工具

工具網址:http://sqlmap.org/

 

SQLiv:一款批量SQL注入漏洞掃描工具

介紹網址:http://www.freebuf.com/column/150588.html

 


向AI問一下細節(jié)
推薦閱讀:
  1. Appium基礎認識
  2. 認識JSON

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI