「前端食堂」想進大廠必需要知道的Web安全問題

觀感度:🌟🌟🌟🌟🌟前端

口味:芋泥草莓git

烹飪時間:15mingithub


本文已收錄在前端食堂Github github.com/Geekhyt,感謝Star。web

從鬍子的長度和憂鬱的眼神我察覺到,面前坐着的這位面試官應該有點東西,渾身上下流露着打過 CTF 的氣場。我像以往同樣,準備花3分鐘的時間進行自我介紹。在此期間,面試官面無表情但頗有耐心的聽着我bilibala。面試

我按照原定計劃順利地介紹(吹)完本身的項目經驗,面試官露出了一絲淡淡的微笑看着我說:算法

你以爲本身最擅長的是什麼?數據庫

(我淡淡的迴應道:雖然是一名前端工程師,可是我對web安全很感興趣。)後端

0.CIA三元組知道嗎?

  • 機密性( Confidentiality
  • 完整性( Integrity
  • 可用性( Availability

(這三個東西必定要回答的乾淨利落,不假思索)瀏覽器

1.XSS攻擊是如何產生的?

黑客在你的瀏覽器中插入一段惡意 JavaScript 腳本,竊取你的隱私信息、冒充你的身份進行操做。這就是 XSS 攻擊(Cross-Site Scripting,跨站腳本攻擊)安全

由於瀏覽器沒法區分腳本是被惡意注入的仍是正常的內容,它都會執行,何況 HTML 很是靈活,能夠在任什麼時候候對它進行修改。

2.知道XSS有哪幾種類型嗎?

(送分題)

  • 反射型 XSS (也叫非持久型)
  • 基於 DOM 的 XSS
  • 存儲型 XSS (也叫持久型 XSS)

3.分別說一下它們的實現原理

反射型:顧名思義,惡意 JavaScript 腳本屬於用戶發送給網站請求中的一部分,隨後網站又將這部分返回給用戶,惡意腳本在頁面中被執行。通常發生在先後端一體的應用中,服務端邏輯會改變最終的網頁代碼。

基於DOM型:目前更流行先後端分離的項目,反射型 XSS 無用武之地。 但這種攻擊不須要通過服務器,咱們知道,網頁自己的 JavaScript 也是能夠改變 HTML 的,黑客正是利用這一點來實現插入惡意腳本。

存儲型:又叫持久型 XSS,顧名思義,黑客將惡意 JavaScript 腳本長期保存在服務端數據庫中,用戶一旦訪問相關頁面數據,惡意腳本就會被執行。常見於搜索、微博、社區貼吧評論等。

4.說一說它們之間的區別

反射型的 XSS 的惡意腳本存在 URL 裏,存儲型 XSS 的惡意代碼存在數據庫裏。

而基於DOM型的XSS 攻擊中,取出和執行惡意代碼由瀏覽器端完成,屬於前端 JavaScript 自身的安全漏洞,其餘兩種 XSS 都屬於服務端的安全漏洞。

(面試官微微擡起頭,遞給我一張紙。)

5.再畫個圖解釋一下把

(好的,給你降維解釋一波)

反射型

基於DOM型

存儲型

(面試官:小夥子圖畫的不錯)

6.黑客能夠經過XSS攻擊作哪些事兒?

  • 盜取用戶 Cookie
  • 未受權操做
  • 修改 DOM
  • 刷浮窗廣告
  • 發動 XSS 蠕蟲攻擊
  • 劫持用戶行爲,進一步滲透內網

(...太多了)

7.XSS攻擊如何進行防禦?

  • 一切用戶輸入皆不可信, 在輸出時進行驗證
  • HTML 元素內容、屬性以及 URL 請求參數、CSS 值進行編碼
  • 當編碼影響業務時,使用 白名單規則進行檢測和過濾
  • 使用 W3C 提出的 CSP (Content Security Policy,內容安全策略),定義域名白名單
  • 設置 Cookie 的 HttpOnly 屬性

8.知道哪些XSS攻擊案例簡單說一下

(沒想到你還愛聽新聞)

  • 2005年,年僅19歲的 Samy Kamkar 發起了對 MySpace.com 的 XSS Worm 攻擊。 Samy Kamkar 的蠕蟲在短短几小時內就感染了100萬用戶——它在每一個用戶的自我簡介後邊加了一句話:「but most of all, Samy is my hero.」(Samy是個人偶像)。這是 Web 安全史上第一個重量級的 XSS Worm,具備里程碑意義。
  • 2007年12月,百度空間收到蠕蟲攻擊,用戶之間開始轉發垃圾短消息。
  • QQ 郵箱 m.exmail.qq.com 域名被發現反射型 XSS 漏洞
  • 2011年新浪微博曾被黑客 XSS 攻擊,黑客誘導用戶點擊一個帶有誘惑性的連接,便會自動發送一條帶有一樣誘惑性連接微博。攻擊範圍層層擴大,也是一種蠕蟲攻擊。

9.什麼是CSRF攻擊?

CSRF 英文全稱是 Cross-site request forgery,又稱爲「跨站請求僞造」。

顧名思義,CSRF 攻擊就是黑客引誘用戶打開黑客的網站,利用用戶的登錄狀態發起跨站請求。

降維解釋:攻擊者誘導受害者進入第三方網站,在第三方網站中,向被攻擊網站發送跨站請求。 利用受害者在被攻擊網站已經獲取的註冊憑證,繞事後臺的用戶驗證, 達到冒充用戶對被攻擊的網站執行某項操做的目的。

10.CSRF攻擊通常怎麼實現?

  • 最容易實現的是 Get 請求,通常進入黑客網站後,能夠經過設置 imgsrc 屬性來自動發起請求
  • 在黑客的網站中,構造隱藏表單來自動發起 Post 請求
  • 經過引誘連接誘惑用戶點擊觸發請求,利用 a 標籤的 href

點擊下載美女視頻

11.CSRF攻擊和XSS攻擊有什麼區別?

CSRF 攻擊不須要將惡意代碼注入用戶的頁面,僅僅是利用服務器的漏洞和用戶的登陸狀態來實施攻擊。

CSRF 攻擊成本也比 XSS 低,用戶天天都要訪問大量網頁,沒法確認每個網頁的合法性, 從用戶角度來講,沒法完全防止 CSRF 攻擊。

12.那應該如何防範CSRF攻擊?

  • 針對實際狀況,設置關鍵 Cookie 的 SameSite 屬性爲 StrictLax
  • 服務端驗證請求來源站點( Referer、Origin)
  • 使用 CSRF Token,服務端隨機生成返回給瀏覽器的 Token,每一次請求都會攜帶不一樣的 CSRF Token
  • 加入二次驗證(獨立的支付密碼)

13.關於Web密碼學你瞭解哪些呢?

  • 對稱加密算法
    • 對稱加密算法就是加密和解密使用同一個密鑰,簡單粗暴
    • 常見的經典對稱加密算法有 DES、AES(AES-128)、IDEA、國密SM一、國密SM4
  • 非對稱加密算法
    • 非對稱加密就是加密和解密使用不一樣的密鑰。發送方使用公鑰對信息進行加密,接收方收到密文後,使用私鑰進行解密。
    • 主要解決了密鑰分發的難題
    • 咱們常說的簽名就是私鑰加密
    • 常見的經典非對稱加密算法有 RSA、ECC和國密SM2
  • 散列算法
    • 不可逆性、魯棒性、惟一性
    • MD五、SHA(SHA-256)、國密SM3
    • 使用時記得加鹽

AES 是國際上最承認的密碼學算法,只要算力沒有極大的突破性進展,這種算法在可預期的將來都是安全的。

ECC 是目前國際上加密強度最高的非對稱加密算法。

MD5SHA 的惟一性被破解了,可是大部分場景下,不會構成安全問題。通常使用 SHA-256 加鹽便可知足大部分使用場景。

14.簡單說一下HTTPS的實現原理

  1. Client 發送 random1+對稱加密套件列表+非對稱加密套件列表
  2. Server 收到信息, 選擇 對稱加密套件+非對稱加密套件 並和 random2+證書(公鑰在證書中) 一塊兒返回
  3. Client 驗證證書有效性,並用 random1+random2 生成 pre-master 經過服務器公鑰加密+瀏覽器確認 發送給 Server
  4. Server 收到 pre-master, 根據約定的加密算法對 random1+random2+pre-master(解密)生成 master-secret,而後發送服務器確認
  5. Client 收到生成一樣的 master-secert,對稱加密祕鑰傳輸完畢

(基操,勿6)

HTTPS 在 TCP 和 HTTP 中間加入了 SSL/TLS 安全層。

  • 對發起 HTTP 請求的數據進行加密操做
  • 對接收到 HTTP 的內容進行解密操做。

採用對稱加密的方式加密傳輸數據和非對稱加密的方式來傳輸密鑰,既能夠解決傳輸效率問題也能保證兩端數據的安全傳輸。除此以外,爲了可以證實服務器是可靠的,引入了數字證書,讓瀏覽器驗證證書的可靠性。

面試官拿起旁邊已經涼透的烏龍茶,喝了一口。

(小夥子,有點東西)

持續更新……

參考

  • 白帽子講Web安全
  • 瀏覽器工做原理與實踐
  • 安全攻防技能30講

❤️愛心三連擊

1.看到這裏了就點個贊支持下吧,你的是我創做的動力。

2.關注公衆號前端食堂你的前端食堂,記得按時吃飯

3.本文已收錄在前端食堂Github github.com/Geekhyt,求個小星星,感謝Star。

相關文章
相關標籤/搜索