動態

詳情 返回 返回

CSRF和XSS - 動態 詳情

CSRF-Cross-Site Request Forgery,跨站請求偽造

典型場景

用户登錄了A網站,A網站通過寫入cookie識別用户身份信息,在未退出A網站的情況下,用户打開了不受信任的B網站,B網站通過瀏覽器向A網站發送了執行敏感操作的請求,並且帶上了cookie,A網站服務端看到cookie信任了該請求,從而導致用户在不知情的情況下執行了敏感操作。

解法

  • 在向A網站發起請求時(如表單請求)附帶一個服務端授予的CSRF Token,這個token可由服務端驗證是否有效;
    這個方法實現較為複雜,需要給每一個頁面都寫入Token(前端無法使用純靜態頁面),每一個Form及Ajax請求都攜帶這個Token,後端對每一個接口都進行校驗,並保證頁面Token及請求Token一致。這就使得這個防護策略不能在通用的攔截上統一攔截處理,而需要每一個頁面和接口都添加對應的輸出和校驗。這種方法工作量巨大,且有可能遺漏。
  • 雙重Cookie
  • 同源檢測(Origin 和 Referer 驗證)
  • 關鍵、敏感操作需要二次輸入驗證碼或者密碼

XSS-Cross-Site Script,跨站腳本攻擊

典型場景

  • 反射型
    攻擊者構造了URL,這個URL是用户平常信任的站點,但是帶有攻擊腳本,一旦用户訪問了該URL就會觸發攻擊腳本的執行,例如竊取用户的cookie用於身份認證或者跳轉到惡意網站。
  • 持久型
    攻擊者在博客網站編寫博客,插入一張圖片,並將圖片src設置為某一段攻擊腳本,提交到博客網站服務器後存入數據庫或者其他持久化存儲中,其他用户訪問該網頁並點擊這個圖片,就會執行這段攻擊腳本,例如竊取用户的cookie用於身份認證或者跳轉到惡意網站。

    解法

  • 開啓HTTP-Only,禁止javascript操作cookie
  • 應對存儲型XSS,永遠不要信任用户的輸入,需要做適當的轉義編碼存儲以及輸出。

Add a new 評論

Some HTML is okay.