首頁 web前端 html教學 CSRF是什麼? CSRF的危害以及防禦方法

CSRF是什麼? CSRF的危害以及防禦方法

Sep 19, 2018 pm 03:25 PM
csrf

本篇文章帶給大家的內容是關於CSRF是什麼? CSRF的危害以及防禦方法,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

什麼是 CSRF

在了解 CSRF 之前我們需要科普兩個前提。首先是登入權限驗證的方式有很多種,目前絕大多數網站採用的還是 session 會話任務的方式。 session 機制簡單的來說就是服務端使用一個鍵值對記錄登入訊息,同時在 cookie 中將 session id(即剛才說的鍵)儲存到 cookie 中。另外我們又知道瀏覽器中 HTTP(s) 請求是會自動幫我們把 cookie 帶上傳給服務端的。這樣在每次請求的時候透過 cookie 取得 session id,然後透過它在服務端取得登入資訊即可完成使用者權限的校驗。

本來這也是個不錯的功能。但是由於 cookie 實在是太開放了,如果一個使用者在 A 網站登入了,如果使用者在 B 網站造訪的時候發送了一個 A 網站的請求,那麼這個請求其實是帶有這個使用者在 A 網站的登入資訊的。如果這時候 B 站的 A 網站請求是用戶不知道的,那就是非常嚴重的危害了。以上的過程就是跨站請求攻擊,即 Cross-Site Request Forgery,即 CSRF。

CSRF 的危害

簡單總結CSRF 漏洞就是利用網站權限校驗方面的漏洞在用戶不知不覺的情況下發送請求,達到「偽裝」用戶的目的。攻擊者利用CSRF 實現的攻擊主要有以下幾種:

攻擊者能夠欺騙受害用戶完成該受害者所允許的任一狀態改變的操作,例如:更新帳號細節,完成購物,註銷甚至登入等操作

取得使用者的隱私資料

搭配其他漏洞攻擊

CSRF 蠕蟲

##其中 CSRF 蠕蟲如其名所指就是產生蠕蟲效果,會將 CSRF 攻擊一傳十,十傳百。如:某社區私訊好友的介面和獲取好友列表的介面都存在CSRF漏洞,攻擊者就可以將其組合成一個CSRF蠕蟲——當一個用戶訪問惡意頁面後通過CSRF獲取其好友列表信息,然後再利用私訊好友的CSRF漏洞給其每個好友發送一條指向惡意頁面的信息,只要有人查看這個信息裡的鏈接,CSRF蠕蟲就會不斷傳播下去,其可能造成的危害和影響非常巨大!

防禦方法

從上文的描述我們可以知道 CSRF 有兩個特點:利用 cookie 自動攜帶的特性以及跨站攻擊。那麼針對這兩個特性可以使用以下解決方法。

檢查 Referer 字段

大家都知道 HTTP 頭中有一個 Referer 字段,這個字段用以標明請求來源於哪個地址。透過在網站中校驗請求的該字段,我們能知道請求是否是從本站發出的。我們可以拒絕一切非本站發出的請求,這樣避免了 CSRF 的跨站特性。

const { parse } = require('url');module.exports = class extends think.Logic {
  indexAction() {
    const referrer = this.ctx.referrer();
    const {host: referrerHost} = parse(referrer);
    if(referrerHost !== 'xxx') {
        return this.fail('REFERRER_ERROR');
    }
  }}
登入後複製

同樣以 ThinkJS 為例,只要在 Logic 中簡單判斷下即可。這種方式利用了客戶端無法建構 Referrer 的特性,雖然簡單,不過當網站網域有多個,或是經常變換網域的時候會變得非常的麻煩,同時也有一定的限制。

Token 驗證

由於CSRF 是利用了瀏覽器自動傳遞cookie 的特性,另外一個防禦思維就是校驗訊息不透過cookie 傳遞,在其他參數中增加隨機加密串進行校驗。這裡又有兩種辦法:

隨機字串:為每一個提交增加一個隨機字串參數,該參數服務端透過頁面下發,每次請求的時候補充到提交參數中,服務端透過校驗該參數是否一致來判斷是否為使用者請求。由於 CSRF 攻擊中攻擊者是無從事先得知該隨機字串的值,所以服務端就可以透過校驗該值拒絕可以請求。

JWT:其實除了 session 登入之外,現在越來越流行 JWT token 登入校驗。該方式是在前端記錄登入 token,每次請求的時候透過在 Header 中新增認證頭的方式來實現登入校驗流程。由於 CSRF 攻擊中攻擊者無法知道該 token 值,透過這種方式也是可以防止 CSRF 攻擊的。當然 token 登入方式除了 JWT 之外還有 OAuth 等很多種方式。

以上是CSRF是什麼? CSRF的危害以及防禦方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Laravel中的跨站腳本攻擊(XSS)和跨站請求偽造(CSRF)防護 Laravel中的跨站腳本攻擊(XSS)和跨站請求偽造(CSRF)防護 Aug 13, 2023 pm 04:43 PM

Laravel中的跨站腳本攻擊(XSS)和跨站請求偽造(CSRF)防護隨著互聯網的發展,網路安全問題也變得越來越嚴峻。其中,跨站腳本攻擊(Cross-SiteScripting,XSS)和跨站請求偽造(Cross-SiteRequestForgery,CSRF)是最常見的攻擊手段之一。 Laravel作為一款受歡迎的PHP開發框架,為使用者提供了多種安全機

PHP Session 跨域與跨站請求偽造的比較分析 PHP Session 跨域與跨站請求偽造的比較分析 Oct 12, 2023 pm 12:58 PM

PHPSession跨域與跨站請求偽造的對比分析隨著網路的發展,Web應用程式的安全性顯得格外重要。在開發Web應用程式時,PHPSession是一種常用的身份驗證和會話追蹤機制,而跨域請求和跨站請求偽造(CSRF)則是兩種主要的安全威脅。為了保護使用者資料和應用程式的安全性,開發人員需要了解Session跨域和CSRF的區別,並採

PHP 框架安全指南:如何防止 CSRF 攻擊? PHP 框架安全指南:如何防止 CSRF 攻擊? Jun 01, 2024 am 10:36 AM

PHP框架安全指南:如何防止CSRF攻擊?跨站點請求偽造(CSRF)攻擊是一種網路攻擊,其中攻擊者誘騙用戶在受害者的網路應用程式中執行非預期操作。 CSRF如何運作? CSRF攻擊利用了一個事實:大多數Web應用程式允許在同一個網域內不同頁面之間發送請求。攻擊者會建立惡意頁面,該頁面向受害者的應用程式發送請求,觸發未經授權的操作。如何防止CSRF攻擊? 1.使用反CSRF令牌:向每個使用者分配一個唯一的令牌,將其儲存在會話或Cookie中。在應用程式中包含一個隱藏字段,用於提交該令牌

PHP中的CSRF攻擊 PHP中的CSRF攻擊 May 25, 2023 pm 08:31 PM

隨著網路的不斷發展,網頁應用也越來越多,然而,安全問題也越來越引起人們的關注。 CSRF(CrossSiteRequestForgery,即跨站請求偽造)攻擊就是一種常見的網路安全問題。 CSRF攻擊是什麼?所謂CSRF攻擊,就是攻擊者盜用了使用者的身份,以使用者的名義進行非法操作。通俗的講,就是攻擊者利用使用者的登入態,在使用者毫不知情的情況下,進行一些非法的操

什麼是跨站點偽造(CSRF),您如何在PHP中實施CSRF保護? 什麼是跨站點偽造(CSRF),您如何在PHP中實施CSRF保護? Apr 07, 2025 am 12:02 AM

在PHP中可以通過使用不可預測的令牌來有效防範CSRF攻擊。具體方法包括:1.生成並在表單中嵌入CSRF令牌;2.在處理請求時驗證令牌的有效性。

SpringBoot防禦CSRF攻擊的流程及原理是什麼 SpringBoot防禦CSRF攻擊的流程及原理是什麼 May 12, 2023 pm 09:13 PM

CSRF原理想要防禦CSRF攻擊,那我們需要先搞清楚什麼是CSRF攻擊,透過下面圖例來和大家梳理CSRF攻擊流程:其實這個流程很簡單:1.假設使用者打開了招商網路銀行網站,並且登入。 2.登入成功後,網路銀行會回到Cookie給前端,瀏覽器將Cookie儲存下來。 3.用戶在沒有登出網路銀行的情況下,在瀏覽器裡打開了一個新的選項卡,然後又去訪問了一個危險網站。 4.這個危險網站上有一個超鏈接,超鏈接的地址指向了招商網上銀行。 4.用戶點擊了這個鏈接,由於這個超鏈接會自動攜帶上瀏覽器中保存的Cookie,所

PHP和Vue.js開發防禦跨站請求偽造(CSRF)攻擊的應用程式 PHP和Vue.js開發防禦跨站請求偽造(CSRF)攻擊的應用程式 Jul 05, 2023 pm 07:21 PM

PHP和Vue.js開發防禦跨站請求偽造(CSRF)攻擊的應用程式隨著互聯網應用程式的發展,跨站請求偽造(Cross-SiteRequestForgery,CSRF)攻擊成為了常見的安全威脅。它利用使用者已登入的身分進行偽造請求,從而執行惡意操作,如修改使用者密碼、發布垃圾訊息等。為了保護使用者的安全和資料的完整性,我們需要在應用程式中實施有效的CSRF

PHP中的跨站請求偽造(CSRF)防禦技術解析 PHP中的跨站請求偽造(CSRF)防禦技術解析 Jun 29, 2023 am 09:20 AM

PHP中的跨站請求偽造(CSRF)防禦技術解析隨著互聯網的快速發展,網路安全問題日益突出。跨站請求偽造(CSRF)攻擊是一種常見的網路安全威脅,它利用用戶已登陸的身份訊息,透過偽裝的請求發送惡意操作,導致用戶在不知情的情況下執行了惡意操作。在PHP開發中,如何防禦CSRF攻擊成為了一個重要的問題。 CSRF攻擊原理在了解如何防禦CSRF攻擊之前,先了解CS

See all articles