什么是XSS攻擊,如何避免?
XSS 攻擊,全稱跨站腳本攻擊(Cross-Site Scripting),這會與層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,因此有人將跨站腳本攻擊縮寫為XSS。它指的是惡意攻擊者往Web頁面里插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的html代碼會被執行,從而達到惡意攻擊用戶的特殊目的。XSS攻擊一般分三種類型:存儲型 、反射型 、DOM型XSS
XSS是如何攻擊的?
拿反射型舉個例子吧,流程圖如下:
如何解決XSS攻擊問題
不相信用戶的輸入,對輸入進行過濾,過濾標簽等,只允許合法值。
HTML 轉義
對于鏈接跳轉,如 <a href=“xxx” 等,要校驗內容,禁止以script開頭的非法鏈接。
限制輸入長度等等
SYN泛洪攻擊
TCP進入三次握手前,服務端會從CLOSED狀態變為LISTEN狀態,同時在內部創建了兩個隊列:半連接隊列(SYN隊列)和全連接隊列(ACCEPT隊列)。
什么是半連接隊列(SYN隊列) 呢? 什么是全連接隊列(ACCEPT隊列) 呢?
TCP三次握手時,客戶端發送SYN到服務端,服務端收到之后,便回復ACK和SYN,狀態由LISTEN變為SYN_RCVD,此時這個連接就被推入了SYN隊列,即半連接隊列。
當客戶端回復ACK, 服務端接收后,三次握手就完成了。這時連接會等待被具體的應用取走,在被取走之前,它被推入ACCEPT隊列,即全連接隊列。
我們都知道 TCP 連接建立是需要三次握手,假設攻擊者短時間偽造不同 IP 地址的 SYN 報文,服務端每接收到 一個 SYN 報文,就進入 SYN_RCVD 狀態,但服務端發送出去的 ACK + SYN 報文,無法得到未知 IP 主機的ACK 應答,久而久之就會占滿服務端的 SYN 接收隊列(未連接隊列),使得服務器不能為正常用戶服務。
處理方法是通過防火墻,或者增大半連接隊列,縮短超時時間。
什么是DoS、DDoS、DRDoS攻擊?
DOS: (Denial of Service),中文名稱是拒絕服務,一切能引起DOS行為的攻擊都被稱為DOS攻擊。最常見的DoS攻擊有計算機網絡寬帶攻擊和連通性攻擊。
DDoS: (Distributed Denial of Service),中文名稱是分布式拒絕服務。是指處于不同位置的多個攻擊者同時向一個或數個目標發動攻擊,或者一個攻擊者控制了位于不同位置的多臺機器并利用這些機器對受害者同時實施攻擊。常見的DDos有SYN Flood、Ping of Death、ACK Flood、UDP Flood等。
DRDoS: (Distributed Reflection Denial of Service),中文名稱是分布式反射拒絕服務,該方式靠的是發送大量帶有被害者IP地址的數據包給攻擊主機,然后攻擊主機對IP地址源做出大量回應,形成拒絕服務攻擊。
什么是CSRF攻擊,如何避免
什么是CSRF 攻擊?
CSRF,跨站請求偽造(英語:Cross-site request forgery),簡單點說就是,攻擊者盜用了你的身份,以你的名義發送惡意請求。跟跨網站腳本(XSS)相比,XSS 利用的是用戶對指定網站的信任,CSRF 利用的是網站對用戶網頁瀏覽器的信任。
CSRF是如何攻擊的呢?
我們來看下這個例子哈(來自百度百科)
Tom 登陸銀行,沒有退出,瀏覽器包含了Tom在銀行的身份認證信息。
黑客Jerry將偽造的轉賬請求,包含在在帖子
Tom在銀行網站保持登陸的情況下,瀏覽帖子
將偽造的轉賬請求連同身份認證信息,發送到銀行網站
銀行網站看到身份認證信息,以為就是Tom的合法操作,最后造成Tom資金損失。
如何解決CSRF攻擊
檢查Referer字段。HTTP頭中有一個Referer字段,這個字段用以標明請求來源于哪個地址。
添加校驗token。