前言
這是我觀看了《前端漏洞分析及處理-蔡慧芨》公開課以後的一個總結及簡單實踐體會。在可能的狀況下我會把他們都實際操做一遍,更加深入地體會前端安全的重要性。html
web安全問題有哪些
- XSS-跨站腳本攻擊(全稱Cross SiteScript)
- CSRF-跨站僞造請求(Cross Site Request Forgery)
- SSRF-服務器僞造請求(Server-Side Request Forgery)
- hijack-劫持
XSS-跨站腳本攻擊
概念
全稱是跨站腳本攻擊(Cross SiteScript),用戶填寫的信息是可運行的js代碼,而且操做了用戶的界面(叫這個簡稱聽說是爲了和CSS作區分)前端
類型
- 反射型--從URL中讀取內容展現(示例)
- 存儲型--從後臺讀取內容展現(示例)
危害
若是惡意的js代碼可以在咱們的頁面中運行的話,他們就能夠操縱咱們用戶的界面,甚至是盜取用戶私密信息,例如記錄登陸態的cookie等。git
防範手段
- 富文本--白名單過濾,能夠理解爲用戶提交的信息只有符合白名單的標準才能經過,不然就會過濾掉,像一些敏感的標籤和屬性都會被過濾掉(示例)
- 純文本--html encode, js encode,即把標籤轉化爲語義標籤(示例)
- 關於轉義的時機,若是是多端共用提交的值的話通常展現時轉義,由於有的端例如安卓要用就要反轉義,工做量就比較大。若是都是web端的話我以爲在提交時就轉義會比較好
CSRF-跨站僞造請求
概念
全稱跨站僞造請求(Cross Site Request Forgery),利用你在網站登陸的狀態,悄悄提交各類信息(post,get請求)github
場景
這種場景通常是你先正常登陸了一個目標網站,而且沒有退出登陸,這個時候若是你點擊了頁面上的一個釣魚網站(多是中獎信息啊、性感美女之類的,哈哈),釣魚網站就會主動向你的網站發起請求,這個時候你的登陸態仍是存在的,由於瀏覽器的不一樣進程之間能夠共享登陸態,因此釣魚網站這個時候是能夠順利以你的身份任意訪問你的網站的接口。web
防範手段 (示例)
- 提交方式必須用POST而後用refer判斷請求來源的域名是不是白名單裏的合法域名,由於post請求確定會有refer,而get請求不必定有。refer必需要頁面內跳轉纔會有,直接在地址欄輸入請求是沒有的。
- Token登陸態校驗,說白了釣魚網站可以訪問你的網站是由於自動獲取了cookie信息,但你在請求頭或者請求參數中加入token登陸態字段的話他就無法自動獲取了。
SSRF-服務器僞造請求
概念
服務器僞造請求(Server-Side Request Forgery)是利用某些業務服務器端會發起請求,請求內網地址json
如何防範 (示例)
- 域名限制
- 內網IP限制
- 內網請求地址作token(特殊登陸態)
hijack-劫持
概念
頁面劫持,例如利用iframe嵌套你的頁面,騙取用戶輸入信息瀏覽器
如何防範
- 頁面劫持:window.parent判斷
- Json劫持:返回{},而不是返回數據
其餘攻擊方式
利用回調的URL,也就是篡改你的redirect-url,例如你登陸或者受權經過後的URL被篡改了
JSONP & CORS安全校驗
- 這種防護手段是利用refer校驗或者token校驗
總結
web安全這一塊平時開發中接觸的很少,並且對於常見的一些攻擊方式已經由一些約定俗稱的規則來規避了,好比登陸後加的token登陸態。但安全這個東西之因此沒有框架化和自動化就在於它的多變性和多角度性,並且對於後面幾種攻擊方式我暫時還沒遇到過,等真實遇到了再寫新的感悟吧。安全
參考