【知識點】前端安全

CSRF攻擊(跨站請求僞造)

什麼是CSRF

跨站請求僞造是指攻擊者能夠在第三方站點製造HTTP請求並以用戶在目標站點的登陸態發送到目標站點,而目標站點未校驗請求來源使第三方成功僞造請求。javascript

爲何會產生CSRF

JS控制瀏覽器發送請求的時候,瀏覽器是根據目標站點,而不是來源站點,來發送cookie的,若是當前會話中有目標站點的cookie,就發送出去。核心問題是瀏覽器的會話機制,是跨站請求僞造漏洞的根源。css

CSRF圖解

token驗證

  1. 用戶登陸,成功後服務器返回Token給客戶端。
  2. 客戶端收到數據後保存在客戶端
  3. 客戶端再次訪問服務器,將token放入headers中
  4. 服務器端採用filter過濾器校驗。校驗成功則返回請求數據,校驗失敗則返回錯誤碼

Referer驗證

根據HTTP協議,在HTTP頭中有一個字段叫Referer,它記錄了該HTTP請求的來源地址。在一般狀況下,訪問一個安全受限頁面的請求必須來自於同一個網站。好比某銀行的轉帳是經過用戶訪問http://bank.test/test?page=10&userID=101&money=10000頁面完成,用戶必須先登陸bank.test,而後經過點擊頁面上的按鈕來觸發轉帳事件。當用戶提交請求時,該轉帳請求的Referer值就會是轉帳按鈕所在頁面的URL(本例中,一般是以bank. test域名開頭的地址)。而若是攻擊者要對銀行網站實施CSRF攻擊,他只能在本身的網站構造請求,當用戶經過攻擊者的網站發送請求到銀行時,該請求的Referer是指向攻擊者的網站。所以,要防護CSRF攻擊,銀行網站只須要對於每個轉帳請求驗證其Referer值,若是是以bank. test開頭的域名,則說明該請求是來自銀行網站本身的請求,是合法的。若是Referer是其餘網站的話,就有多是CSRF攻擊,則拒絕該請求。html

XSS攻擊(跨站腳本攻擊)

攻擊方式

黑客在頁面中嵌入javascript腳本,當用戶瀏覽到該頁面時,腳本就會執行。前端

危害

  1. 經過 document.cookie 盜取 cookie中的信息
  2. 使用 js或 css破壞頁面正常的結構與樣式
  3. 流量劫持(經過訪問某段具備 window.location.href 定位到其餘頁面) 參考連接
  4. dos攻擊:利用合理的客戶端請求來佔用過多的服務器資源,從而使合法用戶沒法獲得服務器響應。而且經過攜帶過程的 cookie信息可使服務端返回400開頭的狀態碼,從而拒絕合理的請求服務。參考連接

類型

  1. 反射型:我向服務端發送了一段攻擊腳本,服務端收到後又原模原樣的返回給客戶端,經常使用攻擊入口搜索框,一般是沒有搜索到相關內容。java

  2. 存儲型:經過發佈帶有惡意腳本的帖子或評論,從而把惡意腳本存儲在服務器,每一個查看該帖子/評論的頁面都會觸發執行惡意腳本。一般有用戶輸入,而且有對應輸出的地方,都有可能發生XSS攻擊瀏覽器

預防

對輸入(和URL參數)進行過濾,對輸出進行編碼安全

  • 在提交表單時,前端最好將文本內容轉爲html實體編碼,也就是過濾掉script、a、這樣的標籤,而後再提交到後臺去。固然保險起見,後臺也要再作一遍html實體轉碼,而後再入庫。服務器

  • 在顯示文本內容時,最好也要作一次html實體編碼轉換後再顯示,防止script標籤生效cookie

點擊劫持

點擊劫持是一種視覺上的欺騙手段。攻擊者使用一個透明的、不可見的iframe,覆蓋在一個網頁上,而後誘使用戶在該網頁上進行操做,此時用戶將在不知情的狀況下點擊透明的iframe頁面。經過調整iframe頁面的位置,能夠誘使用戶剛好點擊在iframe頁面的一些功能性按鈕上。網站

相關文章
相關標籤/搜索