常見Web攻擊

XSS

XSS(Cross-Site  Scripting)跨站腳本攻擊,由於縮寫和CSS重疊,故叫XSS。跨站腳本攻擊是指經過存在安全漏洞的Web網站註冊用戶的瀏覽器內運行非法的HTML標籤或者JavaScript進行的一種攻擊。javascript

存儲型XSS

存儲型 XSS 的攻擊步驟:
  1. 攻擊者將惡意代碼提交到⽬標⽹站的數據庫中。
  2. ⽤戶打開⽬標⽹站時,⽹站服務端將惡意代碼從數據庫取出,拼接在 HTML 中返回給瀏覽器。
  3. ⽤戶瀏覽器接收到響應後解析執⾏,混在其中的惡意代碼也被執⾏。
  4. 惡意代碼竊取⽤戶數據併發送到攻擊者的⽹站,或者冒充⽤戶的⾏爲,調⽤⽬標⽹站接⼝執⾏攻擊者指定的操做。
這種攻擊常⻅於帶有⽤戶保存數據的⽹站功能,如論壇發帖、商品評論、⽤戶私信等。

反射型XSS

反射型 XSS 的攻擊步驟:
  1. 攻擊者構造出特殊的 URL,其中包含惡意代碼。
  2. ⽤戶打開帶有惡意代碼的 URL 時,⽹站服務端將惡意代碼從 URL 中取出,拼接在 HTML 中返回給瀏覽器。
  3. ⽤戶瀏覽器接收到響應後解析執⾏,混在其中的惡意代碼也被執⾏。
  4. 惡意代碼竊取⽤戶數據併發送到攻擊者的⽹站,或者冒充⽤戶的⾏爲,調⽤⽬標⽹站接⼝執⾏攻擊者指定的操做。
反射型 XSS 跟存儲型 XSS 的區別是:存儲型 XSS 的惡意代碼存在數據庫⾥,反射型 XSS 的惡意代碼存在 URL ⾥。
反射型 XSS 漏洞常⻅於經過 URL 傳遞參數的功能,如⽹站搜索、跳轉等。
因爲須要⽤戶主動打開惡意的 URL 才能⽣效,攻擊者每每會結合多種⼿段誘導⽤戶點擊。
POST 的內容也能夠觸發反射型 XSS,只不過其觸發條件⽐較苛刻(須要構造表單提交⻚⾯,並引導⽤戶點擊),因此⾮常少⻅。

DOM型XSS

DOM 型 XSS 的攻擊步驟:
  1. 攻擊者構造出特殊的 URL,其中包含惡意代碼。
  2. ⽤戶打開帶有惡意代碼的 URL。
  3. ⽤戶瀏覽器接收到響應後解析執⾏,前端 JavaScript 取出 URL 中的惡意代碼並執⾏。
  4. 惡意代碼竊取⽤戶數據併發送到攻擊者的⽹站,或者冒充⽤戶的⾏爲,調⽤⽬標⽹站接⼝執⾏攻擊者指定的操做。
DOM 型 XSS 跟前兩種 XSS 的區別:DOM 型 XSS 攻擊中,取出和執⾏惡意代碼由瀏覽器端完成,屬於前端
JavaScript ⾃身的安全漏洞,⽽其餘兩種 XSS 都屬於服務端的安全漏洞。

跨站腳本攻擊有可能形成如下影響:前端

  • 利用虛假表單輸入騙取用戶我的信息
  • 利用腳本竊取用戶的cookie值,受害者在不知情的狀況下,幫助攻擊者發送惡意請求
  • 顯示僞造的內容
  • 獲取頁面數據
  • 劫持前端邏輯

攻擊防範

1,純前端渲染java

純前端渲染的過程:
  •  瀏覽器先加載⼀個靜態 HTML,此 HTML 中不包含任何跟業務相關的數據。
  •  而後瀏覽器執⾏ HTML 中的 JavaScript。
  • JavaScript 經過 Ajax 加載業務數據,調⽤ DOM API 更新到⻚⾯上。
在純前端渲染中,咱們會明確的告訴瀏覽器:下⾯要設置的內容是⽂本( .innerText ),仍是屬性( .setAttribute ),仍是樣式( .style )等等。瀏覽器不會被輕易的被欺騙,執⾏預期外的代碼了。
但純前端渲染還需注意避免 DOM 型 XSS 漏洞(例如 onload 事件和 href 中的 javascript:xxx 等)。
在不少內部、管理系統中,採⽤純前端渲染是⾮常合適的。但對於性能要求⾼,或有 SEO 需求的⻚⾯,咱們仍然要⾯對拼接 HTML 的問題。

2,CSP(Content Security Policy)數據庫

CSP本質上是創建白名單,開發者明確告訴瀏覽器哪些外部資源能夠加載和執行,咱們只須要配置規則,如何攔截有瀏覽器本身實現。咱們能夠經過這種方式來儘可能減小XSS攻擊。瀏覽器

3,轉義字符緩存

對於服務器來講,用戶的輸入永遠不可信任,最廣泛的作法就是轉義輸入輸出的內容,對於引號、尖括號、斜槓等進行轉義。安全

可是對於富文本提交的內容來講,用上面的方法來轉義全部字符,會把須要的格式也過濾掉。對於這種狀況,一般採用白名單過濾的方法。固然也能夠經過黑名單進行過濾,可是由於須要過濾的標籤和屬性實在太多,使用白名單會更加簡便。服務器

嚴格的 CSP 在 XSS 的防範中能夠起到如下的做⽤:
  • 禁⽌加載外域代碼,防⽌複雜的攻擊邏輯
  • 禁⽌外域提交,⽹站被攻擊後,⽤戶的數據不會泄露到外域
  • 禁⽌內聯腳本執⾏(規則較嚴格,⽬前發現 GitHub 使⽤)
  • 禁⽌未受權的腳本執⾏(新特性,Google Map 移動版在使⽤)
  • 合理使⽤上報能夠及時發現 XSS,利於儘快修復問題

4,HttpOnly Cookiecookie

這是預防XSS攻擊竊取用戶cookie最有效的防護手段。Web應用程序在設置cookie時,將其屬性設置爲HttpOnly,就能夠避免該網頁的cookie被客戶端惡意JavaScript竊取,保護用戶cookie信息。網絡

 CSRF

CSRF(Cross Site Request Forgery)跨站請求僞造,是一種常見的Web攻擊,它利用用戶已登陸的身份,在用戶不知情的狀況下,以用戶的身份名義完成非法操做(誘導用戶訪問惡意攻擊者提供的第三方網站,在第三方網站中向被攻擊網站發送跨站請求)。具體流程以下:

  • 受害者登陸 a.com ,並保留了登陸憑證(Cookie)
  • 攻擊者引誘受害者訪問了 b.com
  • b.com 向 a.com 發送了⼀個請求: a.com/act=xx 瀏覽器會默認攜帶a.com的Cookie
  • a.com接收到請求後,對請求進⾏驗證,並確認是受害者的憑證,誤覺得是受害者⾃⼰發送的請求
  • a.com以受害者的名義執⾏了act=xx
  • 攻擊完成,攻擊者在受害者不知情的狀況下,冒充受害者,讓a.com執⾏了⾃⼰定義的操做

CSRF攻擊形成的危害:

  • 利用用戶登陸狀態,執行非法操做
  • 盜取用戶資金(轉帳、消費)
  • 冒充用戶發佈惡意言論。損害用戶和網站聲譽

攻擊防範

CSRF一般從第三⽅⽹站發起,被攻擊的⽹站⽆法防⽌攻擊發⽣,只能經過加強⾃⼰⽹站針對CSRF的防禦能⼒來提高安全性。
CSRF的兩個特色:
  • CSRF(一般)發⽣在第三⽅域名。
  • CSRF攻擊者不能獲取到Cookie等信息,只是使⽤。
針對這兩點,咱們能夠專⻔制定防禦策略,以下:
  • 阻⽌不明外域的訪問
  1. 同源檢測
  2. Samesite Cookie
  • 提交時要求附加本域才能獲取的信息
  1. CSRF Token
  2. 雙重Cookie驗證

點擊劫持 - clickjacking

點擊劫持是一種視覺欺騙的攻擊手段。攻擊者將須要攻擊的網站經過iframe嵌套的方式嵌入本身的網頁中,並將iframe設置爲透明,在頁面中透出一個按鈕誘導用戶點擊。

攻擊防範

1,X-FRAME-OPTIONS

X-FRAME-OPTIONS是一個HTTP響應頭,在現代瀏覽器有一個很好的支持,這個HTTP響應頭就是爲了防護用iframe嵌套的點擊劫持攻擊。

該響應頭有三個值可選:

  • DENY:頁面不容許經過iframe的方式展現
  • SAMEORIGIN:頁面能夠在相同域名下經過iframe的方式展現
  • ALLOW-FROM:頁面能夠在指定來源的iframe中展現

 2,js方式

使用js的方式,就是當經過iframe的方式加載頁面時,經過js腳本讓攻擊者的網頁直接不顯示全部內容。

網絡請求劫持

 網絡劫持通常分爲兩種:

  • HTTP劫持:因爲http明文傳輸,運營商會修改咱們的http響應內容(加廣告等)
  • DNS劫持(輸入網址a,卻被強制跳轉到b網站)
  1. DNS強制解析:經過修改運營商的本地DNS記錄,來引導用戶流量到緩存服務器
  2. 302跳轉的方式:經過監控網絡出口的流量,分析判斷哪些內容是能夠進行劫持處理的,再對劫持的內存發起302跳轉的回覆,引導用戶獲取內容。

 攻擊防範

DNS劫持因爲涉嫌違法,已經被監管起來,如今不多會有DNS劫持。而HTTP劫持依然很是盛行,最有效的辦法就是全站HTTPS,將HTTP加密,這使得運營商沒法獲取明文,就沒法劫持響應內容了。

須要注意的是,這裏說的是全站HTTPS,由於非全站的HTTPS並不安全。

DDOS

DDOS(distributed denial of service)不是一種攻擊,而是一大類攻擊的總稱。它有幾十種類型,新的攻擊方法還在不斷髮明處理。網站運行的各個環節,均可以是攻擊目標。只要把一個環節攻破,使得整個流程跑不起來,就達到了癱瘓服務的目的。

其中,比較常見的一種攻擊是CC攻擊。它就是簡單粗暴地送來大量正常的請求,超出服務器的最大承受量,致使宕機。

攻擊防範

 1,備份網站

備份網站不必定是全功能的,若是能作到全靜態瀏覽,就能知足需求。最低限度應該能夠顯示公告,告訴用戶網站出了問題,正在全力搶修。

2,HTPP請求攔截

相關文章
相關標籤/搜索