WEB前後端漏洞分析與防禦技巧--第一部分

WEB前後端漏洞分析與防禦技巧–第一部分

第一章 前端XSS

XSS攻擊分類
XSS攻擊分類

XSS攻擊注入點

  1. HTML節點內容
  2. HTML屬性
  3. JavaScript代碼
  4. 富文本

瀏覽器自帶防禦:header中增加X-XSS-Protection:1。非常有限的手段,此方案只能防禦出現在html內容或屬性中的反射性XSS。

HTML節點內容和屬性的防禦

HTML節點內容和屬性的防禦

JavaScript代碼的防禦

JavaScript代碼的防禦
轉義相關字符:
轉義相關字符
注意:上面的方法並不保險,推薦直接使用json.Encode等方法將JS代碼轉義爲json格式

富文本的防禦

按白名單保留部分標籤和屬性

CSP(Content Security Policy)

  1. 內容安全策略
  2. 用於指定哪些內容可執行
ctx.set(`Content-Security-Policy`, `default-src 'self'`)

XSS防禦總結

  1. 內置函數轉義
  2. DOM解析白名單
  3. 第三方庫,node的xss庫等
  4. CSP

第二章 前端CSRF

Cross Site Request Forgy(跨站請求僞造)
CSRF攻擊原理

CSRF攻擊危害

  1. 利用用戶登錄態
  2. 用戶不知情
  3. 完成業務請求
  4. 盜取用戶資金
  5. 冒充用戶發帖
  6. 損壞網站名譽

CSFR攻擊防禦

CSFR攻擊防禦

  1. 禁止第三方網站帶Cookies
    • same-site屬性(目前支持的瀏覽器很少)
      same-site屬性

不訪問A網站前端

  1. 在前端頁面加入驗證信息
  2. 驗證碼(前後端都需要改造)
    1. 因爲攻擊者無法知道驗證碼的內容,所以可以保證安全
  3. token
    1. 後端在cookies中設置token,並在前端提交表單的頁面的隱藏域中存儲提交表單需要帶上的token,然後在後端校驗此token是否和cookies中的一致。由於CSRF攻擊者不瞭解cookie中token字段具體的值,可以很大程度上防止CSRF攻擊。

referer爲B網站

  1. 驗證referer
  2. 禁止來自第三方網站的請求
    驗證referer
    注意:這裏驗證referer時在正則表達式中需要加上"^http://xxxxxx.com/",最後的這個斜槓一定不能少,以免其他網站申請”http://xxxxxx.com.attack/“這樣的域名去進行攻擊

第三章 前端Cookies問題

Cookies特性

  1. 前端數據存儲
  2. 後端通過http頭設置
  3. 請求時通過http頭傳給後端
  4. 前端可讀寫
  5. 遵守同源策略

Cookies作用

  1. 存儲個性化設置
  2. 存儲未登錄時用戶唯一標識
  3. 存儲已登錄用戶的憑證
  4. 存儲其他業務數據

Cookies-登錄用戶憑證

  1. 前端提交用戶名密碼
  2. 後端驗證用戶名密碼
  3. 後端通過http頭設置用戶憑證
  4. 後續訪問時後端先驗證用戶憑證

設置用戶憑證的方法

  1. 用戶ID (不安全)
  2. 用戶ID + 簽名 (防篡改)
  3. SessionId (推薦,注意:這裏也可以使用SessionId+簽名的方式預防CSRF攻擊,此時使用此簽名作爲token)

Cookies和XSS的關係

  1. xss可能偷取Cookies
  2. http-only的Cookies不會被偷

Cookies和CSRF的關係

  1. CSRF利用了目標的cookies
  2. 攻擊站點無法讀寫Cookies
  3. 最好能阻止第三方使用Cookies(same-site,但是目前兼容的瀏覽器不多)

Cookies-安全策略

  1. 簽名防篡改
  2. 私有變換(加密),避免cookie篡改和信息泄露
    1. 加密:私有變換(加密)-加密
    2. 解密:私有變換(加密)-解密
    3. http-only(防止XSS)
    4. secure(僅在https中使用,防止傳輸過程中的竊聽)
    5. same-site

第四章 前端點擊劫持問題

  1. 用戶親手操作
  2. 用戶不知情
  3. 盜取用戶資金(轉賬,消費)
  4. 獲取用戶敏感信息

點擊劫持防禦

攻擊原理:使用iframe內嵌其他網站,並將透明度設爲0,然後附在其他網站中,引誘用戶點擊

  1. JavaScript禁止內嵌(不能100%解決,使用sandbox就不行了)
  2. X-FRAME-OPTIONS(HTTP頭)禁止內嵌(推薦,支持IE8以上)
  3. 其他輔助手段(例如驗證碼等)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章