前端面試12:安全類

明易發表於2018-12-05

課程思維導圖

安全類.png

Q:常見的攻擊方式有哪些?

  1. CSRF:跨站請求偽造
  2. XSS:跨站指令碼攻擊

Q:CSRF的原理及防禦措施?

  1. 攻擊原理:
    1. F是網站A的使用者,且已登入,網站A對使用者F進行身份認證後下發了cookie,儲存在F瀏覽器中。
    2. F訪問網站B,網站B存在引誘點選(往往是個連結,指向網站A的API介面,通常是GET型別),然後訪問了A網站,瀏覽器會自動上傳cookie。
    3. 網站A對傳來的cookie進行確認,是合法使用者,則執行介面的動作
  2. 前提:
    1. 網站A某個介面存在漏洞
    2. 使用者在網站A已登入
  3. 防禦措施:
    1. Token驗證:使用者訪問網站時,伺服器會自動向本地儲存token,訪問介面時,需要回傳token,否則無法通過驗證
    2. Referer驗證:伺服器判斷頁面來源是否為站點下的頁面,如果不是,則攔截
    3. 隱藏令牌:與token類似,使用方式上的差別,更加隱蔽(比如放在http頭部)

Q:XSS的原理及防禦措施?

  1. 攻擊原理:向頁面的合法渠道注入指令碼(在指令碼里執行想做的事情,不一定要登入)
  2. 攻擊方式:
    1. 反射型:發出請求時,XSS程式碼出現在URL中,作為輸入傳給伺服器,伺服器解析後響應,XSS程式碼隨響應內容傳回瀏覽器,最後瀏覽器執行XSS程式碼,比如插入廣告、執行惡性程式碼(img onerror)、引誘使用者點選(按鈕點選)
    2. 儲存型:提交的程式碼會儲存在伺服器端(資料庫、記憶體、檔案系統等),下次請求目標頁面時不用再提交XSS程式碼。
  3. 防禦措施(讓插入的指令碼不可執行)
    1. 編碼:對使用者輸入的內容進行HTML Entity轉義,例如</ body>,如果不轉義,直接輸出到頁面上時,DOM結構就被破壞了。同時還要避免直接進行HTML Entity解碼,否則,編碼跟過濾就失去了意義。
    2. 過濾:
      1. 移除使用者上傳的DOM屬性,如onerror等跟事件相關的屬性
      2. 移除使用者上傳的Style節點、Script節點、iframe節點、frame節點等
    3. 校正:使用DOM Parse轉換(類似的第三方庫有domParse),校正不配對的DOM標籤,防止使用者輸入的內容破壞掉我們頁面的DOM結構。

相關文章