A. 常見36種WEB滲透測試漏洞描述及解決方法-文件包含漏洞
漏洞描述:程序代碼在處理包含文件時沒有嚴格控制。可以先把上傳的靜態文件,或網站日誌文件作為代碼執行,或包含遠程伺服器上的惡意文件,獲取伺服器許可權。
解決方法:
(1)嚴格檢查變數是否已經初始化,嚴格檢查include類的文件包含函數中的參數是否外界可控;
(2)對所有輸入可能包含的文件地址,包括伺服器本地文件及遠程文件嚴格檢查,參數中不允許出現../之類的目錄跳轉符;
(3)在客戶端和服務段同時做數據的驗證與過濾。
B. 3大Web安全漏洞防禦詳解:XSS、CSRF、以及sql注入解決方案
隨著互聯網的普及,網路安全變得越來越重要。Java等程序員需要掌握基本的web安全知識,防患於未然,下面列舉一些常見的安全漏洞,以及對應的防禦解決方案。
1.前端安全
2.後端安全
1.XSS簡介
跨站腳本(cross site script)簡稱為XSS,是一種經常出現在web應用中的計算機安全漏洞,也是web中最主流的攻擊方式。
XSS是指惡意攻擊者利用網站沒有對用戶提交數據進行轉義處理或者過濾不足的缺點,進而添加一些代碼,嵌入到web頁面中去,使別的用戶訪問都會執行相應的嵌入代碼。
2.XSS攻擊的危害
1、盜取用戶資料,比如:登錄帳號、網銀帳號等
2、利用用戶身份,讀取、篡改、添加、刪除企業敏感數據等
3、盜竊企業重要的具有商業價值的資料
4、非法轉賬
5、強制發送電子郵件
6、網站掛馬
7、控制受害者機器向其它網站發起攻擊
3.防止XSS解決方案
XSS的根源主要是沒完全過濾客戶端提交的數據 ,所以重點是要過濾用戶提交的信息。
1.CSRF簡介
CSRF(Cross-site request forgery)跨站請求偽造,也被稱為「One Click Attack」或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。
XSS利用站點內的信任用戶,而CSRF則通過偽裝來自受信任用戶的請求來利用受信任的網站。與XSS攻擊相比,CSRF更具危險性。
2.CSRF攻擊的危害
主要的危害來自於,攻擊者盜用了用戶身份,發送惡意請求。比如:模擬用戶的行為發送郵件,發消息,以及支付、轉賬等財產安全。
3.防止CSRF的解決方案
1.簡介
SQL注入是比較常見的網路攻擊方式之一,主要是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字元串,實現無帳號登錄,甚至篡改資料庫。
2.SQL注入的危害
3.防止SQL注入的方式
通常情況下,SQL注入的位置包括:
(1)表單提交,主要是POST請求,也包括GET請求;
(2)URL參數提交,主要為GET請求參數;
(3)Cookie參數提交;
(4)HTTP請求頭部的一些可修改的值,比如Referer、User_Agent等;
4.簡要舉例
舉一個簡單的例子,select * from user where id=100 ,表示查詢id為100的用戶信息,如果id=100變為 id=100 or 2=2,sql將變為:select * from user where id=100 or 2=2,將把所有user表的信息查詢出來,這就是典型的sql注入。
5.防止SQL注入的解決方案
1)對用戶的輸入進行校驗,使用正則表達式過濾傳入的參數
2)使用參數化語句,不要拼接sql,也可以使用安全的存儲過程
3)不要使用管理員許可權的資料庫連接,為每個應用使用許可權有限的資料庫連接
4)檢查數據存儲類型
5)重要的信息一定要加密
總之就是既要做好過濾與編碼並使用參數化語句,也要把重要的信息進行加密處理,這樣sql注入漏洞才能更好的解決。
以上就是Web安全介紹,更多Redis系列、Spring Cloud、Dubbo等微服務、MySQL資料庫分庫分表等架構設計,具體請參考:
回復關鍵詞 【高並發】即可獲取!
C. 盤點信息安全常見的Web漏洞
一、SQL注入漏洞
SQL 注入攻擊( SQL Injection ),簡稱注入攻擊、SQL注入,被廣泛用於非法獲取網站控制權,是發生在應用程序的資料庫層上的安全漏洞。在設計程序,忽略了對輸入字元串中夾帶的SQL指令的檢查,被資料庫誤認為是正常的SQL指令而運行,從而使資料庫受到攻擊,可能導致數據被竊取、更改、刪除,以及進一步導致網站被嵌入惡意代碼、被植入後門程序等危害。
通常情況下, SQL 注入的位置包括:
(1)表單提交,主要是POST 請求,也包括GET 請求;
(2)URL 參數提交,主要為GET 請求參數;
(3)Cookie 參數提交;
(4)HTTP 請求頭部的一些可修改的值,比如Referer 、User_Agent 等;
(5)一些邊緣的輸入點,比如.mp3 文件的一些文件信息等。
SQL注入的危害不僅體現在資料庫層面上, 還有可能危及承載資料庫的操作系統;如果SQL 注入被用來掛馬,還可能用來傳播惡意軟體等,這些危害包括但不局限於:
(1)資料庫信息泄漏:資料庫中存放的用戶的隱私信息的泄露。作為數據的存儲中心,資料庫里往往保存著各類的隱私信息, SQL 注入攻擊能導致這些隱私信息透明於攻擊者。
(2)網頁篡改:通過操作資料庫對特定網頁進行篡改。
(3)網站被掛馬,傳播惡意軟體:修改資料庫一些欄位的值,嵌入網馬鏈接,進行掛馬攻擊。
(4)資料庫被惡意操作:資料庫伺服器被攻擊,資料庫的系統管理員帳戶被篡改。
(5)伺服器被遠程式控制制,被安裝後門。經由資料庫伺服器提供的操作系統支持,讓黑客得以修改或控制操作系統。
(6)破壞硬碟數據,癱瘓全系統。
二、跨站腳本漏洞
跨站腳本攻擊(Cross-site scripting,通常簡稱為XSS)發生在客戶端,可被用於進行竊取隱私、釣魚欺騙、竊取密碼、傳播惡意代碼等攻擊。
XSS攻擊使用到的技術主要為HTML和Javascript,也包括VBScript和ActionScript等。XSS攻擊對WEB伺服器雖無直接危害,但是它藉助網站進行傳播,使網站的使用用戶受到攻擊,導致網站用戶帳號被竊取,從而對網站也產生了較嚴重的危害。
XSS類型包括:
(1)非持久型跨站:即反射型跨站腳本漏洞,是目前最普遍的跨站類型。跨站代碼一般存在於鏈接中,請求這樣的鏈接時,跨站代碼經過服務端反射回來,這類跨站的代碼不存儲到服務端(比如資料庫中)。上面章節所舉的例子就是這類情況。 (2)持久型跨站:這是危害最直接的跨站類型,跨站代碼存儲於服務端(比如資料庫中)。常見情況是某用戶在論壇發貼,如果論壇沒有過濾用戶輸入的Javascript代碼數據,就會導致其他瀏覽此貼的用戶的瀏覽器會執行發貼人所嵌入的Javascript代碼。 (3)DOM跨站(DOM XSS):是一種發生在客戶端DOM(Document Object Model文檔對象模型)中的跨站漏洞,很大原因是因為客戶端腳本處理邏輯導致的安全問題。
三、弱口令漏洞
弱口令(weak password) 沒有嚴格和准確的定義,通常認為容易被別人(他們有可能對你很了解)猜測到或被破解工具破解的口令均為弱口令。設置密碼通常遵循以下原則:
(1)不使用空口令或系統預設的口令,這些口令眾所周知,為典型的弱口令。
(2)口令長度不小於8個字元。
(3)口令不應該為連續的某個字元(例如:AAAAAAAA)或重復某些字元的組合(例如:tzf.tzf.)。
(4)口令應該為以下四類字元的組合,大寫字母(A-Z)、小寫字母(a-z)、數字(0-9)和特殊字元。每類字元至少包含一個。如果某類字元只包含一個,那麼該字元不應為首字元或尾字元。
(5)口令中不應包含本人、父母、子女和配偶的姓名和出生日期、紀念日期、登錄名、E-mail地址等等與本人有關的信息,以及字典中的單詞。
(6)口令不應該為用數字或符號代替某些字母的單詞。
(7)口令應該易記且可以快速輸入,防止他人從你身後很容易看到你的輸入。
(8)至少90天內更換一次口令,防止未被發現的入侵者繼續使用該口令。
四、HTTP報頭追蹤漏洞
HTTP/1.1(RFC2616)規范定義了HTTP TRACE方法,主要是用於客戶端通過向Web伺服器提交TRACE請求來進行測試或獲得診斷信息。當Web伺服器啟用TRACE時,提交的請求頭會在伺服器響應的內容(Body)中完整的返回,其中HTTP頭很可能包括Session Token、Cookies或其它認證信息。
攻擊者可以利用此漏洞來欺騙合法用戶並得到他們的私人信息。該漏洞往往與其它方式配合來進行有效攻擊,由於HTTP TRACE請求可以通過客戶瀏覽器腳本發起(如XMLHttpRequest),並可以通過DOM介面來訪問,因此很容易被攻擊者利用。
五、Struts2遠程命令執行漏洞
ApacheStruts是一款建立Java web應用程序的開放源代碼架構。Apache Struts存在一個輸入過濾錯誤,如果遇到轉換錯誤可被利用注入和執行任意Java代碼。 網站存在遠程代碼執行漏洞的大部分原因是由於網站採用了Apache Struts Xwork作為網站應用框架,由於該軟體存在遠程代碼執高危漏洞,導致網站面臨安全風險。
六、文件上傳漏洞
文件上傳漏洞通常由於網頁代碼中的文件上傳路徑變數過濾不嚴造成的,如果文件上傳功能實現代碼沒有嚴格限制用戶上傳的文件後綴以及文件類型,攻擊者可通過Web訪問的目錄上傳任意文件,包括網站後門文件( webshell ),進而遠程式控制制網站伺服器。因此,在開發網站及應用程序過程中,需嚴格限制和校驗上傳的文件,禁止上傳惡意代碼的文件。同時限制相關目錄的執行許可權,防範webshell攻擊。
七、私有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,也要因情況而論。
八、未加密登錄請求
由於Web 配置不安全, 登陸請求把諸如用戶名和密碼等敏感欄位未加密進行傳輸,攻擊者可以竊聽網路以劫獲這些敏感信息。
九、敏感信息泄露漏洞
SQL 注入、XSS、目錄遍歷、弱口令等均可導致敏感信息泄露,攻擊者可以通過漏洞獲得敏感信息。
Web應用漏洞原理
Web應用攻擊是攻擊者通過瀏覽器或攻擊工具,在URL或者其它輸入區域(如表單等),向Web伺服器發送特殊請求,從中發現Web應用程序存在的漏洞,從而進一步操縱和控制網站,查看、修改未授權的信息。
D. web伺服器上的漏洞主要有
1、系統漏洞,例如系統許可權太寬松、有危險的服務未關閉
2、網站漏洞,SQL注入,在線上傳等等
3、軟體漏洞,例如sql server等
建議你找【護衛神】做下安全加固,他們家的入侵防護系統很不錯。專門防禦web伺服器安全。
E. web安全測試主要有哪些漏洞
以下類型的安全漏洞
權控缺失
系統未能正確分配用戶的許可權,用戶能執行超出自己職能范圍的操作,這類漏洞稱為權控缺失。權控缺失分為兩類:平行越權、垂直越權。
邏輯漏洞
邏輯漏洞通常是由於程序邏輯不嚴密或邏輯太復雜,導致一些邏輯分支被繞過或處理錯誤。常見漏洞包括:任意密碼修改(沒有舊密碼驗證)、密碼找回漏洞、業務數據篡改等。邏輯漏洞的出現易造成賬號被盜、免費購物,游戲應用易造成刷錢、刷游戲幣等嚴重問題。
條件競爭
服務端在做並發編程時,需要考慮到條件競爭的情況。在多個並發線程同時訪問同一資源時,由於對請求的處理不是原子性的,無法預測調度的順序,就可能由於時間序列上的沖突而造成對共享資源的操作混亂。
XSS跨站腳本攻擊
是指惡意攻擊者利用網站沒有對用戶提交數據進行轉義處理或者過濾不足的缺點,提交的數據被WEB應用程序直接使用,使別的用戶訪問都會執行相應的嵌入代碼。從而盜取用戶資料、利用用戶身份進行某種動作或者對訪問者進行病毒侵害的一種攻擊方式。
F. Web應用常見的安全漏洞有哪些
OWASP總結了現有Web應用程序在安全方面常見的十大漏洞分別是:非法輸入、失效的訪問控制、失效的賬戶和線程管理、跨站腳本攻擊、緩存溢出問題、注入式攻擊、異常錯誤處理、不安全的存儲、程序拒絕服務攻擊、不安全的配置管理等。
非法輸入
Unvalidated Input
在數據被輸入程序前忽略對數據合法性的檢驗是一個常見的編程漏洞。隨著OWASP對Web應用程序脆弱性的調查,非法輸入的問題已成為大多數Web應用程序安全漏洞方面的一個普遍現象。
失效的訪問控制
Broken Access Control
大部分企業都非常關注對已經建立的連接進行控制,但是,允許一個特定的字元串輸入可以讓攻擊行為繞過企業的控制。
失效的賬戶和線程管理
Broken Authentication and Session Management
有良好的訪問控制並不意味著萬事大吉,企業還應該保護用戶的密碼、會話令牌、賬戶列表及其它任何可為攻擊者提供有利信息、能幫助他們攻擊企業網路的內容。
跨站點腳本攻擊
Cross Site Scripting Flaws
這是一種常見的攻擊,當攻擊腳本被嵌入企業的Web頁面或其它可以訪問的Web資源中,沒有保護能力的台式機訪問這個頁面或資源時,腳本就會被啟動,這種攻擊可以影響企業內成百上千員工的終端電腦。
緩存溢出問題
Buffer Overflows
這個問題一般出現在用較早的編程語言、如C語言編寫的程序中,這種編程錯誤其實也是由於沒有很好地確定輸入內容在內存中的位置所致。
注入式攻擊
Injection Flaws
如果沒有成功地阻止帶有語法含義的輸入內容,有可能導致對資料庫信息的非法訪問,在Web表單中輸入的內容應該保持簡單,並且不應包含可被執行的代碼。
異常錯誤處理
Improper Error Handling
當錯誤發生時,向用戶提交錯誤提示是很正常的事情,但是如果提交的錯誤提示中包含了太多的內容,就有可能會被攻擊者分析出網路環境的結構或配置。
不安全的存儲
Insecure Storage
對於Web應用程序來說,妥善保存密碼、用戶名及其他與身份驗證有關的信息是非常重要的工作,對這些信息進行加密則是非常有效的方式,但是一些企業會採用那些未經實踐驗證的加密解決方案,其中就可能存在安全漏洞。
程序拒絕服務攻擊
Application Denial of Service
與拒絕服務攻擊 (DoS)類似,應用程序的DoS攻擊會利用大量非法用戶搶占應用程序資源,導致合法用戶無法使用該Web應用程序。
不安全的配置管理
Insecure Configuration Management
有效的配置管理過程可以為Web應用程序和企業的網路架構提供良好的保護。
以上十個漏洞並不能涵蓋如今企業Web應用程序中的全部脆弱點,它只是OWASP成員最常遇到的問題,也是所有企業在開發和改進Web應用程序時應著重檢查的內容。
G. Web應用常見的安全漏洞有哪些
Web應用常見的安全漏洞:
1、SQL注入
注入是一個安全漏洞,允許攻擊者通過操縱用戶提供的數據來更改後端SQL語句。當用戶輸入作為命令或查詢的一部分被發送到解釋器並且欺騙解釋器執行非預期的命令並且允許訪問未授權的數據時,發生注入。
2、跨站腳本攻擊 (XSS)
XSS漏洞針對嵌入在客戶端(即用戶瀏覽器而不是伺服器端)的頁面中嵌入的腳本。當應用程序獲取不受信任的數據並將其發送到Web瀏覽器而未經適當驗證時,可能會出現這些缺陷。
3、跨站點請求偽造
CSRF攻擊是指惡意網站,電子郵件或程序導致用戶的瀏覽器在用戶當前已對其進行身份驗證的受信任站點上執行不需要的操作時發生的攻擊。
4、無法限制URL訪問
Web應用程序在呈現受保護的鏈接和按鈕之前檢查URL訪問許可權 每次訪問這些頁面時,應用程序都需要執行類似的訪問控制檢查。通過智能猜測,攻擊者可以訪問許可權頁面。攻擊者可以訪問敏感頁面,調用函數和查看機密信息。
5、不安全的加密存儲
不安全的加密存儲是一種常見的漏洞,在敏感數據未安全存儲時存在。用戶憑據,配置文件信息,健康詳細信息,信用卡信息等屬於網站上的敏感數據信息。
(7)web漏洞類型擴展閱讀
web應用漏洞發生的市場背景:
由於Web伺服器提供了幾種不同的方式將請求轉發給應用伺服器,並將修改過的或新的網頁發回給最終用戶,這使得非法闖入網路變得更加容易。
許多程序員不知道如何開發安全的應用程序。他們的經驗也許是開發獨立應用程序或Intranet Web應用程序,這些應用程序沒有考慮到在安全缺陷被利用時可能會出現災難性後果。
許多Web應用程序容易受到通過伺服器、應用程序和內部已開發的代碼進行的攻擊。這些攻擊行動直接通過了周邊防火牆安全措施,因為埠80或443(SSL,安全套接字協議層)必須開放,以便讓應用程序正常運行。
H. web應用中的注入漏洞主要有哪幾種
網路發展至今,他的高端我們都見識過,但是網路安全也是一直以來不變的話題,怎樣能使網路更加安全呢?如何構建一個安全的Web環境,是應該考慮的事情。該選擇哪些安全工具呢?我們可以再危險發生之前,先測試一下自己系統中的漏洞。為大家推薦10大Web漏洞掃描程序。 1. Nikto 這是一個開源的Web伺服器掃描程序,它可以對Web伺服器的多種項目進行全面的測試。其掃描項目和插件經常更新並且可以自動更新。Nikto可以在盡可能短的周期內測試你的Web伺服器,這在其日誌文件中相當明顯。不過,如果你想試驗一下,它也可以支持 LibWhisker的反IDS方法。不過,並非每一次檢查都可以找出一個安全問題,雖然多數情況下是這樣的。有一些項目是僅提供信息類型的檢查,這種檢查可以查找一些並不存在安全漏洞的項目,不過Web管理員或安全工程師們並不知道。 2. Paros proxy 這是一個對Web應用程序的漏洞進行評估的代理程序,即一個基於Java的web代理程序,可以評估Web應用程序的漏洞。它支持動態地編輯/查看 HTTP/HTTPS,從而改變cookies和表單欄位等項目。它包括一個Web通信記錄程序,Web圈套程序,hash 計算器,還有一個可以測試常見的Web應用程序攻擊的掃描器。 3. WebScarab: 它可以分析使用HTTP和HTTPS協議進行通信的應用程序,WebScarab可以用最簡單地形式記錄它觀察的會話,並允許操作人員以各種方式觀查會話。如果你需要觀察一個基於HTTP(S)應用程序的運行狀態,那麼WebScarabi就可以滿足你這種需要。不管是幫助開發人員調試其它方面的難題,還是允許安全專業人員識別漏洞,它都是一款不錯的工具。 4. WebInspect: 這是一款強大的Web應用程序掃描程序。SPI Dynamics的這款應用程序安全評估工具有助於確認Web應用中已知的和未知的漏洞。它還可以檢查一個Web伺服器是否正確配置,並會嘗試一些常見的 Web攻擊,如參數注入、跨站腳本、目錄遍歷攻擊等等。 5. Whisker/libwhisker : Libwhisker是一個Perla模塊,適合於HTTP測試。它可以針對許多已知的安全漏洞,測試HTTP伺服器,特別是檢測危險CGI的存在。 Whisker是一個使用libwhisker的掃描程序。 6. Burpsuite: 這是一個可以用於攻擊Web應用程序的集成平台。Burp套件允許一個攻擊者將人工的和自動的技術結合起來,以列舉、分析、攻擊Web應用程序,或利用這些程序的漏洞。各種各樣的burp工具協同工作,共享信息,並允許將一種工具發現的漏洞形成另外一種工具的基礎。 7. Wikto: 可以說這是一個Web伺服器評估工具,它可以檢查Web伺服器中的漏洞,並提供與Nikto一樣的很多功能,但增加了許多有趣的功能部分,如後端 miner和緊密的Google集成。它為MS.NET環境編寫,但用戶需要注冊才能下載其二進制文件和源代碼。 8. Acunetix Web Vulnerability Scanner : 這是一款商業級的Web漏洞掃描程序,它可以檢查Web應用程序中的漏洞,如SQL注入、跨站腳本攻擊、身份驗證頁上的弱口令長度等。它擁有一個操作方便的圖形用戶界面,並且能夠創建專業級的Web站點安全審核報告。 9. Watchfire AppScan: 這也是一款商業類的Web漏洞掃描程序。AppScan在應用程序的整個開發周期都提供安全測試,從而測試簡化了部件測試和開發早期的安全保證。它可以掃描許多常見的漏洞,如跨站腳本攻擊、HTTP響應拆分漏洞、參數篡改、隱式欄位處理、後門/調試選項、緩沖區溢出等等。 10. N-Stealth: N-Stealth是一款商業級的Web伺服器安全掃描程序。它比一些免費的Web掃描程序,如Whisker/libwhisker、 Nikto等的升級頻率更高。還要注意,實際上所有通用的VA工具,如Nessus, ISS Internet Scanner, Retina, SAINT, Sara等都包含Web 掃描部件。N-Stealth主要為Windows平台提供掃描,但並不提供源代碼。
I. 常見36種WEB滲透測試漏洞描述及解決方法-不安全HTTP方法
漏洞描述:目標伺服器啟用不安全的傳輸方法,如PUT、TRACE、DELETE、MOVE等,這可能在伺服器上使用 WebDAV,由於DAV方法允許客戶端操縱伺服器上的文件,若沒有合理配置dav,有可能允許未授權的用戶利用其修改伺服器上的文件。
解決方法:
(1)關閉不安全的傳輸方法,推薦POST、GET方法。
(2)如果伺服器不需要支持 WebDAV,請務必禁用它。或者為允許webdav的目錄配置嚴格的訪問許可權,如認證方法,認證需要的用戶名,密碼。
J. 前端程序員必須知道的 Web 漏洞,快來看看
隨著互聯網的發展,早已經不是僅限於簡單的網頁或是社交,電商購物、銀行轉賬、企業管理等等。上次看到一個新聞,後台程序員離職後,利用職位之便,每天還不斷的給自己轉賬,轉了好多次才被發現,想想這多可怕。或者會竊取重要的商業信息,所以 Web 安全也是非常值得注意的。
什麼是 Web 安全?
黑客利用網路操作系統的漏洞和 Web 伺服器的 SQL 注入漏洞等,得到 Web 伺服器的控制權,輕則篡改、刪除、添加數據,重則竊取重要的商業信息、轉賬等,更嚴重的就是在網頁中植入惡意代碼,使網站受到不可預期的侵害。
常見的攻擊可分為三類:XSS、CSRF、SQL注入。
Cross Site Scripting 跨站腳本攻擊,為了與 CSS 區分,所以簡寫為 XSS 。
惡意攻擊給 Web 頁面植入惡意的 Script 代碼,當用戶瀏覽該網頁的時候,嵌入 Web 裡面的 script 代碼會被執行,從而達到攻擊的效果。
講直白點,就是惡意攻擊者通過在輸入框處添加惡意 script 代碼,用戶瀏覽網頁的時候執行 script 代碼,從而達到惡意攻擊用戶的目的。
1.1、XSS 的危害
1.2、XSS 的攻擊類型
發出請求時,XSS代碼會出現在 url 中,作為輸入提交到伺服器端,伺服器再返回給瀏覽器,然後瀏覽器解析執行 XSS 代碼,這一過程像一次反射,所以稱之為反射型。
這種類型的攻擊,通常是把 XSS 攻擊代碼放入請求地址的 數據傳輸部分,如:
提交的 XSS 代碼會存儲在伺服器端,如資料庫、內存、文件系統內,下次請求目標頁面時不再提交 XSS 代碼。
文檔型的 XSS 攻擊不會經過伺服器,作為中間人的角色,在數據傳輸過程中劫持到網路數據包,然後修改裡面的 html 文檔。
1.3、XSS 的防禦措施
措施1:編碼。
對這些數據進行 html entity 編碼。客戶端和伺服器端都需要進行轉義編碼。
轉義後為:
放入上邊的代碼中,還是會自動解析為上邊的代碼,所以放到外邊。
措施2:過濾。
移除用戶上傳的 DOM 屬性,如上邊的 onerror。
移除用戶上傳的 style、script、iframe 節點。
措施3:利用 CSP
瀏覽器中的內容安全策略,就是決策瀏覽器載入哪些資源。
Cross site request forgery 跨站點請求偽造。
攻擊者誘導受害者進入第三方網站,向被攻擊網站發送跨站請求,利用被攻擊者在被攻擊網站已經獲取的注冊憑證,繞過後台的用戶驗證達到冒充用戶對攻擊網站進行的某種操作。
CSRF 攻擊特點:
2.1、CSRF 的危害
2.2、CSRF 的攻擊類型
使用非常簡單,只需要一個 http 請求。
比如頁面中的一個圖片添加鏈接,還有 iframe、script ,最容易完成 CSFR 攻擊,且不易被用戶發現,隱蔽性超強。
由於 get 介面是最常見的一種 CSRF 攻擊類型,所以很多重要的介面不適用 get 方式,使用 post 一定程度上可以防止 CSRF 攻擊。
這種類型的 SCRF 攻擊,通常使用的是一個自動提交的表單。簡單講就是偽造一個自動提交的表單,一旦訪問頁面時,表單就會自動提交。
如:
比起前兩個,這個類型的比較少見,鏈接類型的攻擊必須要用戶點擊鏈接,才能觸發。
通常在論壇中發布的圖片嵌入惡意的鏈接,或以廣告的形式誘導用戶點擊中招。所以我們在郵箱中看到亂七八糟的廣告,盡量別點擊,防止遇到三方攻擊。
偽造一種新型的攻擊方式,用戶誤以為是在網站正常登錄,實際上是使用賬戶和密碼登錄到了黑客網站,這樣黑客可以監聽到用戶的所有操作,甚至知道用戶的賬戶信息。
2.3、CSRF 的防禦措施
措施1:檢查 http 頭部的 referer 信息
referer 包含在請求頭內,表示請求介面的頁面來源。
服務端通過檢查 referer 信息,發現來源於外域時,就可以攔截請求,通過阻止不明外域的訪問,一定程度上可以減少攻擊。
措施2:使用一次性令牌
使用一次性令牌做身份識別,黑客是無法通過跨域拿到一次性令牌的,所以服務端可以通過判斷是否攜帶一次性令牌,就可以排除一部分的非法操作者。
措施3:使用驗證圖片
服務端生成一些文本和數字,在服務端保存這份信息,同時以圖片的形式在客戶端展現,讓用戶去合法填寫信息,當 CSRF 攻擊時,拿不到這個驗證碼的時候,無法向伺服器提供這個信息,導致匹配失敗,從而識別它是非法攻擊者。
這個應用非常常見,之前登錄的時候,需要填寫圖形驗證碼。
現在滑動圖片驗證也非常常見。
SQL 注入,一般發生在注冊、評論、添加等,只有有用戶輸入的地方,就有可能發生 SQL 注入。SQL 注入是一種常見的 Web 安全漏洞,攻擊者會利用這個漏洞,可以訪問或修改數據,利用潛在的資料庫漏洞進行攻擊。
所謂SQL注入,就是通過把SQL命令插入到Web 表單 提交或輸入域名或頁面請求的查詢字元串,最終達到欺騙伺服器執行惡意的SQL命令。具體來說,它是利用現有應用程序,將(惡意的)SQL命令注入到後台資料庫引擎執行的能力,它可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網站上的資料庫,而不是按照設計者意圖去執行SQL語句。比如先前的很多影視網站泄露VIP會員密碼大多就是通過WEB表單遞交查詢字元暴出的,這類表單特別容易受到 SQL注入式攻擊 .
3.1、SQL 注入危害
任意的賬號都可以登錄,可以進行任意的操作,粗暴點講,就是隨便來。
3.2、 SQL注入分類
當輸入的參數為整數時,則有可能存在數字型漏洞。
當輸入參數為字元串時,則可能存在字元型注入漏洞。數字型與字元型注入最大的區別在於:數字型不需要單引號閉合,而字元型一般需要使用單引號來閉合。
字元型注入最關鍵的是如何閉合 SQL 語句以及注釋多餘的代碼。
其實我覺得 SQL 注入只有兩種類型:數字型與字元型。很多人可能會說還有如:Cookie 注入、POST 注入、延時注入等。
的確如此,但這些類型的注入歸根結底也是數字型和字元型注入的不同展現形式或者注入的位置不同罷了。
以下是一些常見的注入叫法:
3.3、SQL注入的防範措施
凡是用戶輸入的地方,我們都應該防止黑客攻擊,永遠不要相信用戶的輸入。所以對應的防禦措施分別有:
前後端分離之後,前端每天都會接觸到很多介面。發送網路請求的時候,有些介面就會使用 get 方法。最常見的傳參方式就是,直接在 url 地址後面加參數。
直接採用這種方式傳輸數據,如果數據被劫持或抓包工具偷走之後,就會直接被人盜取走,特別危險。若是採用介面加密,如下:
上邊那個看不懂的一長串符號,正是經過加密的數據。
介面加密就是將介面請求調用中傳遞的參數進行加密,目的就是為了保證介面請求中傳遞參數和返回的結果的安全性,一般比較敏感數據,如身份證、電話號碼、賬號、密碼等需要進行加密。
常見的加密方式:
加密方式較多,可以根據自己具體的需要和項目語言選擇其中一種。
加密之後的數據更安全,那我們能不能將介面所有的數據都進行加密呢?加密是非常消耗資源的,如果有大批量的數據都進行加密時,返回數據需要的時間就更長,會直接影響用戶體驗。所以我們進行加密時,只需要對敏感的重要的信息進行加密。
好了我今天的文章就到此結束了,本篇文章沒有介紹到的 web 安全,歡迎評論區交流!