前端解決跨域總結

CSRF (cross site request forgery)跨站請求僞造

定義

又稱XSRF,攻擊者盜用用戶身份,發送惡意請求。【冒充用戶發起請求(在用戶不知情的狀況下),完成一些違背用戶意願的請求(如惡意發帖,刪帖,改密碼,發郵件等)】php

原理

用戶登陸受信任網站A,網站A下發cookies,在未關閉A網站頁面狀況下,訪問B網站,網站B接收到用戶請求後,返回一些攻擊性代碼,併發出一個請求要求訪問第三方站點A,因而,便帶着網站A下發cookies完成請求
注:合法用戶(C)、存在漏洞網站(A)、攻擊網站(B)html

用途&危害

以你名義發送郵件,發消息,盜取你的帳號,甚至於購買商品,虛擬貨幣轉帳等
我的隱私泄露以及財產安全受到威脅、網站信譽受到影響web

防護

  • 經過 referer、token 或者 驗證碼 來檢測用戶提交。(驗證refer(referer)(禁止來自第三方網站的請求))
  • 儘可能不要在頁面的連接中暴露用戶隱私信息。
  • 對於用戶修改刪除等操做最好都使用post 操做 。
  • 避免全站通用的cookie,嚴格設置cookie的域。

xss (cross site scripting) 跨站腳本攻擊

定義

攻擊者能夠利用 web應用的漏洞或缺陷之處,向頁面注入惡意的程序或代碼,以達到攻擊的目的ajax

原理

攻擊者經過各類辦法,在用戶訪問的網頁中注入惡意腳本,讓其在用戶訪問網頁時在其瀏覽器中進行執行,從而達到惡意攻擊用戶的特殊目的數據庫

類型

  • 反射性XSS

經過給用戶發送帶有惡意腳本代碼參數的URL,當URL被打開時,特有的惡意代碼被html解析,執行。
特色是非持久化,必須用戶點擊特定參數的連接才能引發後端

  • 存儲型XSS

XSS代碼提交給網站 -> 網站把XSS代碼存儲進數據庫 -> 當該頁面再次被訪問時服務器發送已經被植入XSS代碼的數據給客戶端 -> 客戶端執行XSS代碼跨域

  • 基於DOM的XSS

DOM中的可被用戶操縱的對象,若是DOM中的數據沒有通過嚴格確認,就會產生漏洞XSS瀏覽器

用途&危害

身份盜用,釣魚欺騙、垃圾信息發送安全

  • 盜取用戶信息、隱私
  • 網站釣魚,盜取各種用戶的帳號
  • 劫持用戶會話,從而執行任意操做,例如進行非法轉帳,強制發表日誌等
  • 強制彈出廣告頁面,刷流量
  • 流量劫持(經過訪問某段具備 window.location.href 定位到其餘頁面)
  • dos攻擊:利用合理的客戶端請求來佔用過多的服務器資源,從而使合法用戶沒法獲得服務器響應。而且經過攜帶過程的 cookie信息可使服務端返回400開頭的狀態碼,從而拒絕合理的請求服務。

防護

對數據進行轉義,針對富文本設置白名單,使用CSP服務器

具體作法:

  • 對輸入內容的特定字符進行編碼,例如表示 html標記的 < > 等符號。
  • 對重要的 cookie設置 httpOnly, 防止客戶端經過document.cookie讀取 cookie,此 HTTP頭由服務端設置。
  • 將不可信的值輸出 URL參數以前,進行 URLEncode操做,而對於從 URL參數中獲取值必定要進行格式檢測(好比你須要的時URL,就判讀是否知足URL格式)。
  • 不要使用 Eval來解析並運行不肯定的數據或代碼,對於 JSON解析請使用 JSON.parse() 方法。
  • 後端接口也應該要作到關鍵字符過濾的問題。

XSS、CSRF二者區別

XSS利用站點內的信任用戶,而CSRF則經過假裝來自受信任用戶的請求來攻擊受信任的網站
XSS是服務器對用戶輸入的數據沒有進行足夠的過濾,致使客戶端瀏覽器在渲染服務器返回的html頁面時,出現了預期值以外的腳本語句被執行。
CSRF是服務器端沒有對用戶提交的數據進行隨機值校驗,且對http請求包內的refer字段校驗不嚴,致使攻擊者能夠利用用戶的Cookie信息僞造用戶請求發送至服務器

CORS

是一個W3C標準,全稱是"跨域資源共享"(Cross-origin resource sharing)它容許瀏覽器向跨源服務器,發出XMLHttpRequest請求,從而克服了AJAX只能同源使用的限制。
最經常使用,主要是後端配置
實現此功能很是簡單,只需由服務器發送一個響應標頭便可。

如:php文件中 header('Access-control-allow-origin:*')
注:ajax xhr.open(method, url, async) async[true: 異步]
相關文章
相關標籤/搜索