本文已收錄在
Github
github.com/Geekhyt,感謝Star。
從鬍子的長度和憂鬱的眼神我察覺到,面前坐着的這位面試官應該有點東西。前端
渾身上下流露着打過CTF的氣場。我像以往同樣,準備花3分鐘的時間進行自我介紹。在此期間,面試官面無表情但頗有耐心的聽着我bilibala。git
我按照原定計劃順利地介紹(吹)完本身的項目經驗,面試官露出了一絲淡淡的微笑看着我說:github
你以爲本身最擅長的是什麼?
(我淡淡的迴應道:雖然是一名前端工程師,可是我對web安全很感興趣。)web
Confidentiality
)Integrity
)Availability
)(這三個東西必定要回答的乾淨利落,不假思索)面試
黑客在你的瀏覽器中插入一段惡意 JavaScript
腳本,竊取你的隱私信息、冒充你的身份進行操做。這就是 XSS 攻擊(Cross-Site Scripting
,跨站腳本攻擊)算法
由於瀏覽器沒法區分腳本是被惡意注入的仍是正常的內容,它都會執行,何況 HTML
很是靈活,能夠在任什麼時候候對它進行修改。數據庫
(送分題)後端
反射型
:顧名思義,惡意 JavaScript
腳本屬於用戶發送給網站請求中的一部分,隨後網站又將這部分返回給用戶,惡意腳本在頁面中被執行。通常發生在先後端一體的應用中,服務端邏輯會改變最終的網頁代碼。瀏覽器
基於DOM型
:目前更流行先後端分離的項目,反射型 XSS 無用武之地。
但這種攻擊不須要通過服務器,咱們知道,網頁自己的 JavaScript
也是能夠改變 HTML
的,黑客正是利用這一點來實現插入惡意腳本。安全
存儲型
:又叫持久型 XSS,顧名思義,黑客將惡意 JavaScript
腳本長期保存在服務端數據庫中,用戶一旦訪問相關頁面數據,惡意腳本就會被執行。常見於搜索、微博、社區貼吧評論等。
反射型的 XSS
的惡意腳本存在 URL
裏,存儲型 XSS
的惡意代碼存在數據庫裏。
而基於DOM型的XSS
攻擊中,取出和執行惡意代碼由瀏覽器端完成,屬於前端 JavaScript
自身的安全漏洞,其餘兩種 XSS
都屬於服務端的安全漏洞。
(面試官微微擡起頭,遞給我一張紙。)
(好的,給你降維解釋一波)
(面試官:小夥子圖畫的不錯)
(...太多了)
在輸出時進行驗證
HTML 元素內容、屬性以及 URL 請求參數、CSS 值進行編碼
白名單規則進行檢測和過濾
CSP (Content Security Policy,內容安全策略)
,定義域名白名單Cookie 的 HttpOnly
屬性(沒想到你還愛聽新聞)
CSRF 英文全稱是 Cross-site request forgery
,又稱爲「跨站請求僞造」。
顧名思義,CSRF 攻擊就是黑客引誘用戶打開黑客的網站,利用用戶的登錄狀態發起跨站請求。
降維解釋:攻擊者誘導受害者進入第三方網站,在第三方網站中,向被攻擊網站發送跨站請求。
利用受害者在被攻擊網站已經獲取的註冊憑證,繞事後臺的用戶驗證, 達到冒充用戶對被攻擊的網站執行某項操做的目的。
Get
請求,通常進入黑客網站後,能夠經過設置 img
的 src
屬性來自動發起請求Post
請求a
標籤的 href
。[點擊下載美女視頻]()
CSRF 攻擊不須要將惡意代碼注入用戶的頁面,僅僅是利用服務器的漏洞和用戶的登陸狀態來實施攻擊。
CSRF 攻擊成本也比 XSS 低,用戶天天都要訪問大量網頁,沒法確認每個網頁的合法性,
從用戶角度來講,沒法完全防止 CSRF 攻擊。
SameSite
屬性爲 Strict
或 Lax
Referer、Origin
)CSRF Token
,服務端隨機生成返回給瀏覽器的 Token,每一次請求都會攜帶不一樣的 CSRF Token對稱加密算法
DES、AES(AES-128)、IDEA、國密SM一、國密SM4
非對稱加密算法
RSA、ECC和國密SM2
散列算法
MD五、SHA(SHA-256)、國密SM3
AES
是國際上最承認的密碼學算法,只要算力沒有極大的突破性進展,這種算法在可預期的將來都是安全的。
ECC
是目前國際上加密強度最高的非對稱加密算法。
MD5
和 SHA
的惟一性被破解了,可是大部分場景下,不會構成安全問題。通常使用 SHA-256 加鹽
便可知足大部分使用場景。
random1+對稱加密套件列表+非對稱加密套件列表
對稱加密套件+非對稱加密套件 並和 random2+證書(公鑰在證書中)
一塊兒返回random1+random2 生成 pre-master 經過服務器公鑰加密+瀏覽器確認
發送給 Server根據約定的加密算法對 random1+random2+pre-master(解密)生成 master-secret,而後發送服務器確認
master-secert
,對稱加密祕鑰傳輸完畢(基操,勿6)
HTTPS 在 TCP 和 HTTP 中間加入了 SSL/TLS 安全層。
採用對稱加密的方式加密傳輸數據和非對稱加密的方式來傳輸密鑰,既能夠解決傳輸效率問題也能保證兩端數據的安全傳輸。除此以外,爲了可以證實服務器是可靠的,引入了數字證書,讓瀏覽器驗證證書的可靠性。
面試官拿起旁邊已經涼透的烏龍茶,喝了一口。
(小夥子,有點東西)
持續更新……
1.看到這裏了就點個贊支持下吧,你的「贊」是我創做的動力。
2.關注公衆號前端食堂,「你的前端食堂,記得按時吃飯」!
3.本文已收錄在前端食堂Github
github.com/Geekhyt,求個小星星,感謝Star。