隨着互聯網的高速發展,安全問題已成爲企業最關注的焦點之一。而前端又是容易引起安全問題的「窗口」,做爲開發人員的咱們,更須要充分了解如何預防和修復安全漏洞。本文將列舉常見的前端安全問題,但願對你有所幫助。前端
本文將從如下幾種安全問題展開介紹:git
XSS攻擊全稱跨站腳本攻擊(Cross-Site Scripting),爲區別CSS,在安全領域叫作XSS。攻擊者經過在目標網站上注入惡意腳本並運行,獲取用戶的敏感信息如 Cookie、SessionID等,影響網站與用戶數據安全。github
開始這種攻擊的案例是跨域的,因此叫作「跨站腳本」。可是發展到今天,因爲JS的強大以及網站前端應用的複雜化,是否跨域已經再也不重要。但因爲歷史緣由,XSS這個名字卻一直保留下來。web
本質是惡意代碼未通過濾,與網站正常的代碼混在一塊兒,瀏覽器沒法分辨哪些腳本是可信的,致使惡意腳本執行。shell
XSS攻擊要素數據庫
XSS攻擊分類segmentfault
類型 | 存儲區 | 插入點 |
---|---|---|
反射型XSS | URL | HTML |
存儲型XSS | 後端數據庫 | HTML |
DOM型XSS | 後端數據庫/前端存儲/URL | 前端JS |
反射型XSS攻擊後端
反射型XSS只是把用戶輸入的數據「反射」給瀏覽器,攻擊者每每須要誘使用戶操做一個惡意連接,才能攻擊成功。反射型XSS也叫作「非持久型XSS」(Non-persistent XSS)跨域
存儲型XSS攻擊瀏覽器
存儲型XSS會把用戶輸入的數據「存儲」在服務器端,這種XSS具備很強的穩定性
比較常見的一個場景就是,黑客寫下一篇包含有惡意JS代碼的博客文章,發表後,全部訪問該博客文章的用戶都會在他們的瀏覽器中執行這段惡意的JS代碼。黑客把惡意的腳本保存到服務器端,因此這種XSS攻擊就叫作「存儲型XSS」
存儲型XSS一般也叫作「持久型XSS」(Persistent XSS)
DOM型XSS攻擊
DOM型XSS從效果上來講也是反射型XSS,經過修改頁面的DOM節點造成XSS,稱之爲DOM型XSS
實際上,這種類型的XSS並不是按照「數據是否保存在服務器端」來劃分,單獨劃分出來,是由於DOM型XSS的造成緣由比較特別,發現它的安全專家專門提出了這種類型的XSS。出於歷史緣由,也就把它單獨做爲一個分類了。
XSS攻擊類型區別
存儲型XSS的惡意代碼存在數據庫裏,反射型XSS的惡意代碼存在URL裏
DOM型XSS攻擊中,取出和執行惡意代碼由瀏覽器端完成,屬於前端JS自身的安全漏洞,而其餘兩種XSS都屬於服務端的安全漏洞
XSS攻擊檢測
使用XSS攻擊字符串手動檢測XSS漏洞 github.com/0xsobky/Hac…
使用掃描工具自動檢測XSS漏洞 例如Arachni、Mozilla HTTP Observatory、w3af等
XSS攻擊防護
針對以上總結的XSS攻擊的防護方法,咱們再來針對CSP與HttpOnly進行進一步的瞭解與分析:
CSP (Content Security Policy)
HttpOnly Cookie
禁止JS讀取敏感Cookie,攻擊者完成XSS注入後也沒法竊取Cookie
XSS攻擊帶來的不光是Cookie劫持問題,還有竊取用戶信息、模擬用戶身份執行操做 攻擊者利用AJAX構造HTTP請求,以用戶身份完成的操做,就是在不知道用戶Cookie的狀況下進行的。
CSRF(Cross-site request forgery)跨站請求僞造,攻擊者盜用受害人身份,以受害人的名義發送惡意請求。 其本質是重要操做的全部參數都是能夠被攻擊者猜想到的,攻擊者只有預測出URL的全部參數與參數值,才能成功地構造一個僞造的請求;反之,攻擊者將沒法攻擊成功。
CSRF攻擊要素
CSRF攻擊防護
阻止不明外域的訪問
提交時要求附加本域才能獲取的信息
CSRF測試
經過Web應用接口注入SQL語法,破壞原有SQL結構,達到攻擊行爲。 若是網站存在注入漏洞,至關於將數據庫直接暴露在攻擊者面前 根據注入位置及方式不一樣分分爲POST注入、GET注入、cookie注入、盲注、延時注入、搜索注入、base64注入等
SQL注入要素
SQL注入防護
XXE (XML External Entity)外部實體漏洞,當應用程序解析XML輸入時,若是沒有禁止外部實體的加載,致使可加載惡意外部文件和代碼,形成任意文件讀取、命令執行、內網端口掃描等攻擊。只在可以接收XML格式參數的接口才會出現
XXE漏洞防護
JSON劫持(JSON Hijacking)是用於獲取敏感數據的一種攻擊方式,屬於CSRF攻擊的範疇
JSON劫持防護
XST攻擊(cross-site tracing)當Web服務器啓用TRACE時,提交的請求頭會在服務器響應Body中完整返回,其中HTTP頭極可能包括Session Token、Cookies或其它認證信息,攻擊者能夠利用漏洞獲取用戶信息
XST攻擊防護
禁用HTTP TRACE方法
弱密碼(Weak Password)被他人猜到或被破解工具暴力破解
暴力破解防護
Web服務器或應用程序沒有正確處理一些特殊請求,泄露 敏感信息,如用戶名、密碼、源代碼、服務器信息、配置信息等
信息泄漏防護