愛伊米

杭州藍韻網路 | 作為站長,你有必要了解的網站攻擊技術—SQL注入

在Web安全領域中,SQL注入可以說是無人不知,無人不曉。哪怕是沒接觸過Web安全的站長,也多多少少聽過這詞,它是目前被利用得最多的漏洞之一。

杭州藍韻網路 | 作為站長,你有必要了解的網站攻擊技術—SQL注入

什麼是SQL注入?

SQL是操作資料庫資料的結構化查詢語言,網頁的應用資料和後臺資料庫中的資料進行互動時會採用SQL。而SQL注入則是將Web頁面的原URL、表單域或資料包輸入的引數,修改拼接成SQL語句,傳遞給Web伺服器,進而傳給資料庫伺服器以執行資料庫命令。

如果Web應用程式的開發人員對使用者所輸入的資料或cookie等內容不進行過濾或驗證(即存在注入點)就直接傳輸給資料庫,就可能導致拼接的SQL被執行,獲取對資料庫的資訊以及提權,發生SQL注入攻擊。

SQL的方法原理

SQL注入攻擊的核心在於讓Web伺服器執行攻擊者期望的SQL語句,以便得到資料庫中的感興趣的資料或對資料庫進行讀取、修改、刪除、插入等操作,達到其不懷好意的目的。

那麼如何讓Web伺服器執行攻擊者的SQL語句呢?SQL注入的常規套路在於將SQL語句放置於Form表單或請求引數之中提交到後端伺服器,後端伺服器如果未做輸入安全校驗,直接將變數取出進行資料庫查詢,則極易中招。例如:

對於一個根據使用者ID獲取使用者資訊的介面,後端的SQL語句一般是這樣:

杭州藍韻網路 | 作為站長,你有必要了解的網站攻擊技術—SQL注入

其中,$id就是前端提交的使用者id,而如果前端的請求是這樣:

杭州藍韻網路 | 作為站長,你有必要了解的網站攻擊技術—SQL注入

其中,請求引數id轉義後就是1 or 1=1,如果後端不做安全過濾直接提交資料庫查詢,SQL語句就變成了:

杭州藍韻網路 | 作為站長,你有必要了解的網站攻擊技術—SQL注入

其結果是把使用者表中的所有資料全部查出,達到了駭客洩露資料的目的。

上面只是一個非常簡單的示例,真實的SQL注入攻擊,它的引數構造和SQL語句遠比這個要複雜得多,但是原理都是一致的。

怎麼樣預防SQL注入

1。如果你使用的是第三方CMS程式(如:discuz!,DedeCMS,ECshop等),請將程序升級至最新版本。

2。過濾使用者輸入的資料。預設情況下,應當認為使用者的所有輸入都是不安全的。

3。在網頁程式碼中需要對使用者輸入的資料進行嚴格過濾。

4。部署 Web 應用防火牆。

5。對資料庫操作進行監控。