給Web開發者的建議
有很多優秀的文檔論述在編碼時如何防御SQL注入攻擊。由于這些攻擊者leverage有漏洞的Web應用程序代碼,所以完全防御他們的唯一方法是解析在代碼中存在的漏洞。程序中任何一個使用外部資源(一般指從URI請求字符串)數據來動態生成SQL請求的地方都應當被認為是可疑的。當代碼漏洞被識別出來,他們應當被小心的修復。
- 說明-SQL注入、ASP.NET和ADO.NET :
http://msdn.microsoft.com/en-us/library/bb671351.aspx 同時,上面的文章包含到相關文章"如何在ASP.NET中避免SQL注入" http://msdn.microsoft.com/en-us/library/ms998271.aspx,該文章同時適用于ASP。 這里有一個非常有用的視頻(該視頻是針對一篇防御文章的,然而鏈接可能已經無效了):http://channel9.msdn.com/wiki/default.aspx/SecurityWiki.SQLInjectionLab。
- 關于SQL注入如何實現的簡單信息:
http://msdn.microsoft.com/en-us/library/ms161953.aspx
- ASP代碼中的SQL注入(與ASP.NET中的并不相同):
http://msdn.microsoft.com/en-us/library/cc676512.aspx 如何在ASP中執行SQL Server存儲過程: http://support.microsoft.com/kb/q164485
- Microsoft安全部門(The Microsoft Security Development Lifecycle,SDL)對SQL注入的防御進行了一些指導。簡單來說有三種策略來應對SQL注入攻擊:
- 使用SQL參數查詢
- 使用存儲過程
- 使用SQL僅執行(execute-only)許可
Michael Howard在http://blogs.msdn.com/sdl/archive/2008/05/15/giving-sql-injection-the-respect-it-deserves.aspx談論了這些內容。 同時,編寫安全的代碼(第二版)也指導了如何防御此類攻擊(請瀏覽399-411頁)。
- 減輕SQL注入:使用參數查詢(第一部分和第二部分)。使用參數化查詢的好處是它將執行的代碼(例如SELECT語句)和數據(由程序使用者提供的動態信息)分開。該途徑防御了通過用戶傳遞來執行的惡意語句。
第一部分: http://blogs.technet.com/neilcar/archive/2008/05/21/sql-injection-mitigation-using-parameterized-queries.aspx 第二部分: http://blogs.technet.com/neilcar/archive/2008/05/23/sql-injection-mitigation-using-parameterized-queries-part-2-types-and-recordsets.aspx 在經典ASP代碼中過濾SQL注入(或者黑名單中的字符),我們將如下的工作認為是實際中臨時性的解決方案,因為它治標不治本。(例如,代碼仍然是有漏洞的,他仍然可能被繞過過濾機制而被訪問到) IIS團隊中的Nazim解釋了如何過濾的詳細信息:http://blogs.iis.net/nazim/archive/2008/04/28/filtering-sql-injection-from-classic-asp.aspx。 如果你仍然不了解從哪里開始,所有使用特定ASP代碼訪問數據庫,尤其是使用由用戶提供的數據的代碼應當首先被檢測。
給最終用戶的建議
最終用戶(下簡稱用戶-譯者注)應當瀏覽位于http://www.microsoft.com/protect/default.mspx的信息。另外,這里也有一些你可以采取以保護自己的步驟。
- 通常應當有選擇的訪問網站-但是也需要了解,該漏洞也會影響用戶信任的網站。
有選擇的訪問網站減少了你暴露在漏洞下的風險,當然即使是你所信任的也有可能被攻擊。留意不正常的行為,了解面臨的風險,并且實施本節提供的其他建議。
- 針對Microsoft和第三方軟件,保持安全更新。
由于惡意代碼通常利用了已知的漏洞,因此你應當確保你在運行最新進行安全更新過的的Microsoft和第三方軟件。Microsoft安全更新可以通過http://update.microsoft.com了解。http://www.microsoft.com/protect/computer/updates/OS.aspx有更多信息。
- 禁用不必要的ActiveX控件和IE加載項。
你應當禁用所有不必要的ActiveX控件和IE加載項。根據KB883256(http://support.microsoft.com/kb/883256)的方法在Windows XP Service Pack2或者更新版本中來實施本步驟:
- 打開IE。
- 在"工具"菜單點擊管理加載項。
- 點擊加載項的名稱。
- 使用如下的方法:
- 點擊更新ActiveX來使用最新的版本替換該控件。這個方法并非對所有的加載項都可用。
- 點擊"啟用",而后點擊"確定",來啟用加載項。
- 點擊"禁用",而后點擊"確定",來禁用加載項。
你可能需要重啟IE來確保在啟用/禁用插件的操作成功。針對更糟的操作系統,根據KB154036(http://support.microsoft.com/kb/154036)的說明進行操作。
- 減少你所使用的第三方瀏覽器的受攻擊風險的步驟。
如果你使用了IE之外的瀏覽器,那么你應當確保你安裝的是最新的安全更新版本,同時你應當禁用了不必要的擴展和加載項。流行瀏覽器的信息可以在如下鏈接找到: Firefox - http://support.mozilla.com/en-US/kb/Firefox+Support+Home+Page Opera - http://www.opera.com/support/ Safari - http://www.apple.com/support/safari/
- 更新反惡意程序軟件
用戶應當確保已經安裝了殺毒軟件和反間諜軟件,并且保持他們的更新。你可以在http://www.microsoft.com/protect/computer/antivirus/OS.aspx和http://www.microsoft.com/protect/computer/antispyware/OS.aspx找到更多信息。你可以在 http://onecare.live.com/standard/en-us/install/install.htm得到一份90天使用的Windows Live OneCare殺毒/反間諜軟件。
文章來源于領測軟件測試網 http://www.kjueaiud.com/