搜尋
首頁web前端html教學CSRF是什麼? 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
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中。在应用程序中包含一个隐藏字段,用于提交该令牌

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中的CSRF攻击PHP中的CSRF攻击May 25, 2023 pm 08:31 PM

随着网络的不断发展,网页应用也越来越多,然而,安全问题也越来越引起人们的关注。CSRF(CrossSiteRequestForgery,即跨站请求伪造)攻击就是一种常见的网络安全问题。CSRF攻击是什么?所谓CSRF攻击,就是攻击者盗用了用户的身份,以用户的名义进行非法操作。通俗的讲,就是攻击者利用用户的登录态,在用户毫不知情的情况下,进行一些非法的操

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

PHP安全防护:防范CSRF攻击PHP安全防护:防范CSRF攻击Jun 24, 2023 am 11:10 AM

随着互联网的发展,越来越多的网站使用PHP来开发。PHP作为一种常用的脚本语言,可以轻松处理各种数据类型,同时也具有灵活性和易用性。但是,PHP开发网站也存在安全问题,其中最常见的就是CSRF攻击。CSRF攻击(Cross-siteRequestForgery)也被称为“跨站请求伪造”,是利用用户已登录的身份在不知情的情况下完成恶意操作的攻击方式。攻击者

PHP如何防御CSRF攻击PHP如何防御CSRF攻击Jun 30, 2023 pm 07:34 PM

如何使用PHP防御跨站请求伪造(CSRF)攻击随着Web应用程序的发展和普及,网络安全问题变得越来越重要。跨站请求伪造(CSRF)攻击成为了其中一种常见的攻击手段。CSRF攻击是指攻击者通过仿冒合法用户的请求来执行一些恶意操作,例如在用户没有意识到的情况下转账、修改密码等。为了保护用户和Web应用程序的安全,开发者需要采取措施来防御此类攻击。本文将介绍如何使

See all articles

熱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.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器