Web安全之XSS、CSRF和點擊劫持

  1. 常見的前端攻擊方式html

    XSS 攻擊、CSRF 攻擊、點擊劫持、URL 跳轉漏洞。前端

  2. 什麼是 XSS 攻擊?面試

    XSS 即跨站腳本攻擊,是一種代碼注入攻擊。惡意代碼未通過濾,與網站正常代碼混在一塊兒,瀏覽器沒法分辨哪些腳本是可信的,致使惡意腳本被執行。數據庫

  3. XSS 攻擊有幾種攻擊類型?如何防範 XSS 攻擊?json

    XSS 攻擊包括反射型、DOM 型和持久型三種。segmentfault

    (1) 反射型 XSS瀏覽器

    • 攻擊步驟:攻擊者構造含有惡意代碼的 URL,用戶點擊 URL,服務端取出 URL 中的惡意代碼拼接在HTML 中返回,瀏覽器解析並執行含有惡意代碼的代碼,惡意代碼竊取用戶數據或者冒充用戶調用接口。
    • 常見場景:網站搜索、跳轉等,經過 URL 傳遞參數。
    • 防範方式:對 URL 的參數進行編碼。

    (2) DOM 型 XSS安全

    • 攻擊步驟:攻擊者經過 DOM 操做構造出包含惡意代碼的數據,瀏覽器執行惡意代碼後,惡意代碼竊取用戶數據或者冒充用戶行爲。
    • 常見情景:用.innerHTML.outerHTMLappendChilddocument.write()等 API 時把不可信的數據做爲 HTML 插到了頁面上。
    • 防範方式:用.innerText.textContentsetAttribute()等API,並對輸入內容進行轉義。

    (3) 存儲型 XSS服務器

    • 攻擊步驟:攻擊者將惡意代碼提交到目標網站的數據庫中,服務端將惡意代碼拼接在 HTML 中返回,瀏覽器解析執行惡意代碼,惡意代碼竊取用戶數據或冒充用戶行爲。
    • 常見場景:論壇發帖、商品評論、用戶私信等須要存儲用戶輸入數據的網站。
    • 防範方式:前端傳遞數據給數據以前、服務器存儲數據以前、前端展現服務器傳遞的數據以前,都對數據進行轉義/過濾。

    其餘防範 XSS 攻擊的手段:cookie

    (1) CSP:白名單制度,開發者經過配置告訴瀏覽器哪些外部資源能夠加載和執行。能夠經過服務端配置 HTTP的Content-Security-Policy頭部指定,也能夠在前端設置meta標籤。

    (2) 輸入內容限制,不能包含特殊字符。

    (3) 爲 Cookie 設置HttpOnly標記,使攻擊者不能經過 JavaScript 訪問 Cookie。

    Set-Cookie: ...; HttpOnly
    複製代碼

    (4) 驗證碼:防止腳本冒充用戶提交危險操做。

  4. 什麼是 CSRF ?如何防範 CSRF ?

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

    防範方式:

    1. 添加驗證碼(體驗很差)
    2. 判斷請求來源:檢測 Referer(不安全,Referer 能夠被更改)
    3. 使用 Token:服務端給用戶生成一個 token,加密後傳給用戶,用戶提交請求時攜帶這個 token,服務端對這個 token 進行驗證。
    4. 服務端爲響應頭Set-Cookie設置Samesite屬性,限制第三方 Cookie,不是全部瀏覽器都支持這種方式。Samesite能夠設置三個值:
      • Strict,徹底禁止第三方 Cookie,跨站點時,任何狀況下都不會發送 Cookie。
      • Lax,跨站點時,除導航到目標地址的 Get 請求(連接、預加載、GET 表單)外,其餘狀況也不發送第三方 Cookie。
      • None,關閉SameSite屬性,前提是必須同時設置Secure屬性。
  5. 除了 XSS 和 CSRF 攻擊以外,還有哪些攻擊方式?

    1. 點擊劫持:
      • 在 Web 頁面中隱藏了一個透明的 iframe,用外層假頁面誘導用戶點擊,其實是在隱藏的 iframe 上觸發了點擊事件進行用戶不知情的操做。
      • 防範方式:在響應頭中設置X-Frame-Options頭部,能夠設置三個值:
        • DENY:表示該頁面不容許在 frame 中展現,即便在相同域名的頁面中嵌套也不容許
        • sameorigin:表示該頁面能夠在相同域名頁面的 frame 中展現
        • allow-from uri:表示該頁面能夠在指定來源的 frame 中展現
    2. URL 跳轉漏洞
      • 服務端告知瀏覽器跳轉時,未對傳入的跳轉地址進行合法性校驗,致使用戶瀏覽器跳轉到釣魚頁面。
      • 防範方式:在 URL 連接里加入驗證 token 。
  6. 安全掃描工具

    Arachni、Mozilla HTTP Observatory、w3af


參考:

  1. 【segmentfault】【面試篇】寒冬求職之你必需要懂的Web安全:segmentfault.com/a/119000001…
  2. 【阮一峯】Cookie 的 SameSite 屬性:www.ruanyifeng.com/blog/2019/0…
  3. 【MDN】X-Frame-Options:developer.mozilla.org/zh-CN/docs/…
相關文章
相關標籤/搜索