web安全:SQL注入

SQL注入是網站和web應用程序中最常見的安全漏洞。這種惡意技術有很多應用場景, 但(SQL注入)通常是指在數據輸入的地方注入代碼以利用數據庫應用程序中的安全漏洞。 SQL注入在接收用戶輸入的接口處 (也就是說在註冊表單、查詢表單等地方)嘗試執行注入操作。對(SQL注入)高度關注以及方便檢測數據庫應用程序中的安全漏洞使得攻擊者經常地以最小的努力“測試”網站/應用程序的安全完整性。

危害

成功執行的SQL注入有可能嚴重危害數據庫中存儲的數據。這種攻擊的意圖可能包括(但不限於)任何以下方式:

● 數據提取

● 添加或修改數據

● 癱瘓服務

● 繞過身份驗證

● 執行遠程命令

● 修改權限

總結來說,一個成功執行的SQL注入可能讓攻擊者像管理員一樣控制數據庫。

SQL注入著名的例子包括:

2008年4月---- 在一個SQL注入導致攻擊者下載了10597個屬於性犯罪者的社會安全號碼後,俄克拉荷馬州的性暴力犯罪者註冊機構關閉了他們的網站。http://thedailywtf.com/Articles/Oklahoma-Leaks-Tens-of-Thousands-of-Social-Security-Numbers,-Other-Sensitive-Data.aspx

2011年6月--- PBS 被黑客LulzSec攻擊了,他在PBS首頁添加了一個故事聲稱在過去的15年裏圖帕克沙克一直在新西蘭生活。http://www.huffingtonpost.com/2011/05/30/pbs-hacked-tupac-alive_n_868673.html

2011年6月--- 在一個用戶把SQL注入漏洞的細節發佈到黑客論壇之後,Lady Gaga’s網站成千上萬粉絲的個人信息(電子郵件、名字)被泄露。據報道,被泄露信息的粉絲收到了推送 lady Gaga’s商品的欺詐郵件。http://www.mirror.co.uk/celebs/news/2011/07/16/lady-gaga-website-hacked-and-fans-details-stolen-115875-23274356/

預防措施

轉義符號

許多的SQL注入攻擊可以被預防只要在提交查詢之前轉義引號。請參考谷歌的Code University網站的例子。一些開發人員使用一種被稱爲“黑名單”類似於轉義(符號)的技術,輸入接口處過濾危險的字符。通常不推薦這種方式,因爲當你選擇這種替代方案時也影響到了數據本身。

重要事項

無論是轉義還是“黑名單”技術都不能提供完全的保護以防止SQL注入,因爲他們不能阻止數字參數攻擊。數字參數攻擊不需要引號或任何特殊字符。

白名單

白名單是表單輸入校驗,其中只接受一個良好定義的設置(或列表)輸入的值。輸入限制越具體,越能降低SQL注入攻擊的風險。例如,如果你是接受一個月份的輸入參數,你可以按以下方式檢查:

是否是integer類型

這個integer類型參數是否大於0

這個integer類型參數是否小於12

這樣當攻擊者發動對你的數據庫攻擊時,每個限制條件都會縮小攻擊者的試探範圍。

最小權限原則

只啓用網站、應用所需的權限功能。通過限制您訪問數據庫的賬戶權限,同時你也限制了容易遭受的SQL注入攻擊。例如,如果你有一個查詢數據庫的需求,查詢數據庫的賬戶應當只有讀取權限。一般來說,查詢者不需要修改、添加數據,所以他不需要Insert或Update權限。在這種情況下,這些權限不需要存在,因此他們(查詢者)也不需要有這些權限。如果這些權限在你的網站、應用中不存在,它們就不會被攻擊者利用。

不要顯示詳細的錯誤信息

錯誤消息有時會暴露一些信息,這使得攻擊者能獲取數據庫的某些特徵。攻擊者獲取數據庫的信息越多,他就越能對已知漏洞發起攻擊。

加密敏感數據

以上所有的信息有助於您保護數據庫中的數據避免被攻擊,而且你也應當加密數據。使用對稱加密算法,你可以輕鬆加密敏感數據(只能使用密鑰來解密)。這種技術的缺點是如果攻擊者知道了你的密鑰,他們就能很容易解密你的數據。這就是爲什麼不要把密鑰和數據庫中的數據存放在一起而是存放在服務器文件裏如此重要。

 

 

1. 本文由mathew翻譯

2. 本文譯自Web Security: SQL Injection | DBS Interactive

3. 轉載請務必註明本文出自:程序員學架構(微信號:archleaner )

4. 更多文章請掃碼:

發佈了4 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章