1、SQL注入漏洞
SQL注入攻擊(SQL Injection),簡稱注入攻擊、SQL注入,被普遍用於非法獲取網站控制權,是發生在應用程序的數據庫層上的安全漏洞。在設計程序,忽略了對輸入字符串中夾帶的SQL指令的檢查,被數據庫誤認爲是正常的SQL指令而運行,從而使數據庫受到攻擊,可能致使數據被竊取、更改、刪除,以及進一步致使網站被嵌入惡意代碼、被植入後門程序等危害。
一般狀況下,SQL注入的位置包括:
(1)表單提交,主要是POST請求,也包括GET請求;
(2)URL參數提交,主要爲GET請求參數;
(3)Cookie參數提交;
(4)HTTP請求頭部的一些可修改的值,好比Referer、User_Agent等;
(5)一些邊緣的輸入點,好比.mp3文件的一些文件信息等。
常見的防範方法
(1)全部的查詢語句都使用數據庫提供的參數化查詢接口,參數化的語句使用參數而不是將用戶輸入變量嵌入到SQL語句中。當前幾乎全部的數據庫系統都提供了參數化SQL語句執行接口,使用此接口能夠很是有效的防止SQL注入攻擊。
(2)對進入數據庫的特殊字符(’」<>&*;等)進行轉義處理,或編碼轉換。
(3)確認每種數據的類型,好比數字型的數據就必須是數字,數據庫中的存儲字段必須對應爲int型。
(4)數據長度應該嚴格規定,能在必定程度上防止比較長的SQL注入語句沒法正確執行。
(5)網站每一個數據層的編碼統一,建議所有使用UTF-8編碼,上下層編碼不一致有可能致使一些過濾模型被繞過。
(6)嚴格限制網站用戶的數據庫的操做權限,給此用戶提供僅僅可以知足其工做的權限,從而最大限度的減小注入攻擊對數據庫的危害。
(7)避免網站顯示SQL錯誤信息,好比類型錯誤、字段不匹配等,防止攻擊者利用這些錯誤信息進行一些判斷。
(8)在網站發佈以前建議使用一些專業的SQL注入檢測工具進行檢測,及時修補這些SQL注入漏洞。javascript
2、跨站腳本漏洞
跨站腳本攻擊(Cross-site scripting,一般簡稱爲XSS)發生在客戶端,可被用於進行竊取隱私、釣魚欺騙、竊取密碼、傳播惡意代碼等攻擊。
XSS攻擊使用到的技術主要爲HTML和JavaScript,也包括VBScript和ActionScript等。XSS攻擊對WEB服務器雖無直接危害,可是它藉助網站進行傳播,使網站的使用用戶受到攻擊,致使網站用戶賬號被竊取,從而對網站也產生了較嚴重的危害。
XSS類型包括:
(1)非持久型跨站:即反射型跨站腳本漏洞,是目前最廣泛的跨站類型。跨站代碼通常存在於連接中,請求這樣的連接時,跨站代碼通過服務端反射回來,這類跨站的代碼不存儲到服務端(好比數據庫中)。上面章節所舉的例子就是這類狀況。
(2)持久型跨站:這是危害最直接的跨站類型,跨站代碼存儲於服務端(好比數據庫中)。常見狀況是某用戶在論壇發貼,若是論壇沒有過濾用戶輸入的javascript代碼數據,就會致使其餘瀏覽此貼的用戶的瀏覽器會執行發貼人所嵌入的Javascript代碼。
(3)DOM跨站(DOM XSS):是一種發生在客戶端DOM(Document Object Model文檔對象模型)中的跨站漏洞,很大緣由是由於客戶端腳本處理邏輯致使的安全問題。
經常使用的防止XSS技術包括:
(1)與SQL注入防禦的建議同樣,假定全部輸入都是可疑的,必須對全部輸入中的script、iframe等字樣進行嚴格的檢查。這裏的輸入不只僅是用戶能夠直接交互的輸入接口,也包括HTTP請求中的Cookie中的變量,HTTP請求頭部中的變量等。
(2)不只要驗證數據的類型,還要驗證其格式、長度、範圍和內容。
(3)不要僅僅在客戶端作數據的驗證與過濾,關鍵的過濾步驟在服務端進行。
(4)對輸出的數據也要檢查,數據庫裏的值有可能會在一個大網站的多處都有輸出,即便在輸入作了編碼等操做,在各處的輸出點時也要進行安全檢查。
(5)在發佈應用程序以前測試全部已知的威脅。html
3、弱口令漏洞
弱口令(weak password) 沒有嚴格和準確的定義,一般認爲容易被別人(他們有可能對你很瞭解)猜想到或被破解工具破解的口令均爲弱口令。設置密碼一般遵循如下原則:
(1)不使用空口令或系統缺省的口令,這些口令衆所周之,爲典型的弱口令。
(2)口令長度不小於8個字符。
(3)口令不該該爲連續的某個字符(例如:AAAAAAAA)或重複某些字符的組合(例如:tzf.tzf.)。
(4)口令應該爲如下四類字符的組合,大寫字母(A-Z)、小寫字母(a-z)、數字(0-9)和特殊字符。每類字符至少包含一個。若是某類字符只包含一個,那麼該字符不該爲首字符或尾字符。
(5)口令中不該包含本人、父母、子女和配偶的姓名和出生日期、記念日期、登陸名、E-mail地址等等與本人有關的信息,以及字典中的單詞。
(6)口令不該該爲用數字或符號代替某些字母的單詞。
(7)口令應該易記且能夠快速輸入,防止他人從你身後很容易看到你的輸入。
(8)至少90天內更換一次口令,防止未被發現的入侵者繼續使用該口令。java
4、HTTP報頭追蹤漏洞
HTTP/1.1(RFC2616)規範定義了HTTP TRACE方法,主要是用於客戶端經過向Web服務器提交TRACE請求來進行測試或得到診斷信息。當Web服務器啓用TRACE時,提交的請求頭會在服務器響應的內容(Body)中完整的返回,其中HTTP頭極可能包括Session Token、Cookies或其它認證信息。攻擊者能夠利用此漏洞來欺騙合法用戶並獲得他們的私人信息。該漏洞每每與其它方式配合來進行有效攻擊,因爲HTTP TRACE請求能夠經過客戶瀏覽器腳本發起(如XMLHttpRequest),並能夠經過DOM接口來訪問,所以很容易被攻擊者利用。
防護HTTP報頭追蹤漏洞的方法一般禁用HTTP TRACE方法。mysql
5、Struts2遠程命令執行漏洞
ApacheStruts是一款創建Java web應用程序的開放源代碼架構。Apache Struts存在一個輸入過濾錯誤,若是遇到轉換錯誤可被利用注入和執行任意Java代碼。
網站存在遠程代碼執行漏洞的大部分緣由是因爲網站採用了Apache Struts Xwork做爲網站應用框架,因爲該軟件存在遠程代碼執高危漏洞,致使網站面臨安全風險。CNVD處置過諸多此類漏洞,例如:「GPS車載衛星定位系統」網站存在遠程命令執行漏洞(CNVD-2012-13934);Aspcms留言本遠程代碼執行漏洞(CNVD-2012-11590)等。
修復此類漏洞,只需到Apache官網升級Apache Struts到最新版本:http://struts.apache.orgweb
6、文件上傳漏洞
文件上傳漏洞一般因爲網頁代碼中的文件上傳路徑變量過濾不嚴形成的,若是文件上傳功能實現代碼沒有嚴格限制用戶上傳的文件後綴以及文件類型,攻擊者可經過 Web 訪問的目錄上傳任意文件,包括網站後門文件(webshell),進而遠程控制網站服務器。
所以,在開發網站及應用程序過程當中,需嚴格限制和校驗上傳的文件,禁止上傳惡意代碼的文件。同時限制相關目錄的執行權限,防範webshell攻擊。sql
7、私有IP地址泄露漏洞
IP地址是網絡用戶的重要標示,是攻擊者進行攻擊前須要瞭解的。獲取的方法較多,攻擊者也會因不一樣的網絡狀況採起不一樣的方法,如:在局域網內使用Ping指令,Ping對方在網絡中的名稱而得到IP;在Internet上使用IP版的QQ直接顯示。最有效的辦法是截獲並分析對方的網絡數據包。攻擊者能夠找到並直接經過軟件解析截獲後的數據包的IP包頭信息,再根據這些信息瞭解具體的IP。
針對最有效的「數據包分析方法」而言,就能夠安裝可以自動去掉髮送數據包包頭IP信息的一些軟件。不過使用這些軟件有些缺點,譬如:耗費資源嚴重,下降計算機性能;訪問一些論壇或者網站時會受影響;不適合網吧用戶使用等等。如今的我的用戶採用最普及隱藏IP的方法應該是使用代理,因爲使用代理服務器後,「轉址服務」會對發送出去的數據包有所修改,導致「數據包分析」的方法失效。一些容易泄漏用戶IP的網絡軟件(QQ、MSN、IE等)都支持使用代理方式鏈接Internet,特別是QQ使用「ezProxy」等代理軟件鏈接後,IP版的QQ都沒法顯示該IP地址。雖然代理能夠有效地隱藏用戶IP,但攻擊者亦能夠繞過代理,查找到對方的真實IP地址,用戶在何種狀況下使用何種方法隱藏IP,也要因狀況而論。shell
8、未加密登陸請求
因爲Web配置不安全,登錄請求把諸如用戶名和密碼等敏感字段未加密進行傳輸,攻擊者能夠竊聽網絡以劫獲這些敏感信息。建議進行例如SSH等的加密後再傳輸。數據庫
9、敏感信息泄露漏洞
SQL注入、XSS、目錄遍歷、弱口令等都可致使敏感信息泄露,攻擊者能夠經過漏洞得到敏感信息。針對不一樣成因,防護方式不一樣apache
10、CSRF
http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html瀏覽器