999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于Apache的CSRF防御模塊的實現

2017-10-13 20:09:28王馬龍
網絡安全技術與應用 2017年3期
關鍵詞:頁面用戶

◆王馬龍 劉 健

?

一種基于Apache的CSRF防御模塊的實現

◆王馬龍 劉 健

(四川大學計算機學院 四川 610065)

跨站請求偽造(CSRF)漏洞的存在十分廣泛,而且是開放式web應用安全項目(OWASP)統計的Top 10 Web攻擊列表中最具威脅的漏洞之一。目前最具代表性的兩種CSRF防御工具是CSRFGuard[2]和jCSRF[3]。針對CSRFGuard會將JS動態創建的動態HTTP請求誤認為是CSRF攻擊;jCSRF以代理模式部署,會增大web服務器的響應時間這兩大問題,本文通過重寫XMLHttpRequest對象onsend的方法,向HTTP頭注入CSRF防御Token,基于Apache web 服務器實現了一個CSRF防御模塊mod_anticsrf,去除了代理的網絡通信開銷。實驗結果表明,mod_anticsrf支持動態HTTP請求,且幾乎不影響web服務器的響應時間。

CSRF;Apache;動態HTTP請求;性能

0 引言

跨站請求偽造(Cross-Site Request Forgery,CSRF)攻擊是一種當今互聯網上廣泛存在的Web攻擊。近幾年來,CSRF在OWASP(Open Web Application Security Project)每年的十大安全漏洞中[1]始終能夠穩居前列。它并不是一種新型的攻擊,但是其攻擊原理簡單,極具破壞性。由于CSRF漏洞存在于大量的Web應用程序中,如果通過手動修改程序源代碼的方式來修復漏洞,工作量將十分巨大。基于此,本文基于ApacheWeb服務器實現了一種CSRF防御模塊。

1 CSRF防御工具現狀

CSRFGuard[2]和jCSRF[3]都是基于一次性Token的方法實現的CSRF防御工具。CSRFGuard是由OWASP發布的CSRF防御技術。它是一個實現了 Token模式的JAVA類庫[4],通過生成隨機的Token,而攻擊者無法構造有效請求,從而對CSRF攻擊進行防御。它的缺點是:(1)只有Javaweb應用服務器能使用;(2)它使用JavaScript DOM注入Token的方法是在頁面加載完后遍歷頁面所有元素,對“form”或“a”等元素或屬性插入Token。因此,CSRFGuard比較適合處理靜態頁面。如果有表單在頁面加載完后由JavaScript腳本動態創建,其提交的請求不能被CSRFGuard插入Token,相關頁面的操作也可能因缺少Token被阻止或者可能遭受CSRF攻擊。jCSRF解決了CSRFGuard的第二個缺點,并提出了一種同域和跨域CSRF防御的協議。但是jCSRF也有兩個不足之處:(1)目前不支持GET方法;(2)它以HTTP代理的方式部署,會增大系統時延。

2 基于Apache的CSRF防御模塊的設計與實現

2.1 基于Apache的CSRF防御模塊的設計

圖1 jCSRF部署圖

如圖1所示,jCSRF以http代理的形式部署在Web服務器的前方,用戶的每次請求都必須由jCSRF轉發一次,給系統帶來了很大的網絡時延。

為減少了瀏覽器與代理之間的網絡IO造成的開銷,本文將mod_anticsrf設計為一個可動態加載的模塊,它可根據用戶的配置由Apache Http服務器動態加載/卸載。它的部署模式如下圖2所示:

mod_anticsrf的工作流程如圖3所示:

(1)接收用戶的HTTP請求;

(2)判斷該請求是否為此會話的初始請求(即第一次請求),如果是,則跳轉至第(3)步;否則,跳轉至第(4)步;

(3)生成隨機Token,構造CSRF防御js腳本,然后將js腳本注入到HTTP響應中,跳轉至第(7)步;

(4)從HTTP請求中提取Token,成功則跳轉至第(5)步;否則,跳轉至第(6)步;

(5)判斷Token是否合法,如果合法,則跳轉至第(3)步;否則,跳轉至第(6)步;

(6)阻斷當前HTTP請求,視配置決定是否需要記錄日志,跳轉至第(1)步;

(7)將HTTP響應頁面發送給用戶,跳轉至第(1)步。

圖3 mod_anticsrf工作流程

2.2 基于Apache的CSRF防御模塊的實現

mod_anticsrf從架構上來看主要分為兩個部分。一部分是用C語言實現的Apache模塊,這部分主要負責Token的構造、JS代碼的注入和Token的驗證;另一部分是要注入到用戶響應頁面的JS代碼,這段JS代碼負責在用戶發起請求的時候將Token添加到HTTP的頭部或請求體里面。在實現mod_anticsrf的過程中,主要解決以下幾個技術問題:

2.2.1 Token的構造

Token的構造過程是mod_anticsrf的重要部分,為了區分攻擊者和正常用戶傳遞過來的Token,我們從用戶請求中提取一個能唯一標識用戶的特征來構造Token,構造過程如下:

2.2.2 Token的注入

在服務器端添加Token至HTTP響應頁面是一種注入Token的方法,但是這樣添加Token會對整個頁面進行遍歷,從而導致服務器的延遲增大。本文采用了在用戶瀏覽器中通過JS腳本(anticsrf.js)的方式,動態地在用戶的HTTP請求中添加Token。具體方法如下:

為值;

對于表單,遍歷dom樹,找到所有的

節點,然后添加一個類型為hidden的子節點,name設置為“csrfToken”,value設置為;

對于Ajax請求,需要重寫XMLHttpRequest對象的onsend方法以注入請求頭域“csrfToken:”,核心代碼如下:

XMLHttpRequest.prototype.onsend = function(data){

// 注入請求頭 "csrfToken:tokenValue"

this.setRequestHeader("csrfToken",tokenValue);

}

2.2.3 在HTTP響應中注入JS腳本

注入JS腳本的步驟如下:

找到標簽,在它的前面插入對anticsrf.js的引用,即:

找到標簽,在它的前面插入對anticsrf.js中的主函數insertToken的調用代碼以傳入生成的Token,即:

2.2.4 Token的提取和驗證

當Apache接收到的HTTP請求不是當前會話的初始請求時,mod_anticsrf就要提取該請求中的Token,過程如下:

(1)在HTTP請求頭中尋找csrfToken域,如果找到,說明這是一個Ajax請求,取出它的Token值,跳轉至第(3)步;否則,跳轉至第(5)步;

(2)在HTTP的請求參數和表單參數中尋找csrfToken域,如果找到,取出它的Token值,跳轉至第(3)步;否則跳轉至第(5)步;

(6)提取本次請求的源IP地址,如果,則說明請求合法,將該請求的控制權交還給Apache;否則,跳轉至第(7)步;

(7)驗證失敗,阻斷請求。

3 實驗及結果分析

為測試mod_anticsrf能否支持JS動態創建的HTTP請求,本文設計了一個簡單的網頁:changePassword.php,這個頁面模擬的是用戶改密碼的功能,它提交數據的方式是Ajax。從圖4可以看出,頁面能正常訪問,不會被誤認為是CSRF攻擊。

圖4 Ajax請求抓包

本文還針對無CSRF防御、開啟mod_anticsrf和使用jCSRF三種情況進行了性能測試,測試方法為使用Apache開源性能測試工具ab向服務器發起10000次請求,并發為100rps(具體命令為:ab -n 10000 -c 100 -p post.txt http://192.168.11.120/ changePassword.php),最終比較各種情況下的總耗時。結果如圖5所示:Apache在開啟mod_anticsrf模塊之后基本不影響系統性能,而使用jCSRF卻會導致系統時延增加大約1/2。

圖5性能對比圖

由實驗結果可以看出,由于Ajax請求頭里面被成功地注入了CSRF防御Token,所以它不會被判定為CSRF攻擊;而且,由于mod_anticsrf直接運行在Apache進程內,不會像jCSRF那樣需要與代理之間的網絡通信,所以幾乎不會增加系統時延。

4 結束語

本文基于Apache實現了一種CSRF防御模塊mod_anticsrf,可以避免mod_anticsrf將JS動態創建的HTTP請求誤判為CSRF攻擊;此外,將mod_anticsrf以動態模塊的方式部署于Apache服務器中,幾乎不會影響系統響應時間。現在,mod_anticsrf暫不支持jQuery等三方JS庫;該模塊有待改進以支持Web應用中存在XSS漏洞的情況。

[1]OWASP.“Top ten most critical web application security vulnerabilities”.http://www.owasp.org/index.php/OWASP_Top_Ten_Project,2013.

[2]Boyan Chen,Pavol Zavarsky,Ron Ruhl and Dale Lindskog A Studyof the Effectiveness of CSRF Guard. 2011 IEEE International Conferenceon Privacy,Security,Risk,and Trust,and IEEE InternationalConference on Social Computing .

[3]Riccardo Pelizzi,R. Sekar. A server- and browser- transparent CSRF defensefor web 2.0 applications[C]// ACSAC'11:Proceedings of the 27th AnnualComputer Security Applications Conference. New York:ACM,2011.

[4]OWASP.Category:OWASP CSRFGuard Project [EB/ OL].https://www.owasp.org/index.php/CSRFGuard,2016.

國家重點研發計劃(2016yfb00604,2016yfb00605),國家自然科學基金項目(61572334)。

猜你喜歡
頁面用戶
微信群聊總是找不到,打開這個開關就好了
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
同一Word文檔 縱橫頁面并存
主站蜘蛛池模板: 久久人人97超碰人人澡爱香蕉| 欧美国产在线一区| 喷潮白浆直流在线播放| 亚洲第一页在线观看| 久久九九热视频| 亚洲精品片911| 亚洲欧美一区二区三区麻豆| 欧美成人手机在线视频| 国产情侣一区二区三区| 日韩av资源在线| 高清久久精品亚洲日韩Av| 亚洲日本中文综合在线| 国产日韩丝袜一二三区| 制服无码网站| 欧美人与性动交a欧美精品| 精品人妻一区无码视频| 国产一区在线观看无码| 日韩免费无码人妻系列| 亚洲黄色片免费看| 国产激爽大片在线播放| 91精品国产综合久久不国产大片| 亚洲国产精品日韩av专区| 好吊色妇女免费视频免费| 色综合久久无码网| 国产精品短篇二区| 欧美www在线观看| 夜夜操天天摸| 国产视频只有无码精品| 亚洲无线视频| 欧美国产日产一区二区| 毛片在线看网站| 亚洲无码高清一区| 91麻豆国产精品91久久久| 色亚洲激情综合精品无码视频| 综合色天天| 乱人伦视频中文字幕在线| 99视频全部免费| 国产大片喷水在线在线视频 | 欧美一区精品| 免费99精品国产自在现线| 成人一级免费视频| 91午夜福利在线观看| 欧美精品伊人久久| 五月婷婷综合网| 国产成人AV综合久久| 爆操波多野结衣| 54pao国产成人免费视频| 草逼视频国产| 五月婷婷导航| 日本福利视频网站| 91无码视频在线观看| 99视频精品全国免费品| 国产视频一区二区在线观看| 精品国产一区二区三区在线观看| 99久久免费精品特色大片| 国产乱肥老妇精品视频| 亚洲九九视频| 日韩小视频网站hq| 国产高清精品在线91| 99久久国产综合精品2023| 国产一在线| 久久影院一区二区h| 新SSS无码手机在线观看| 自慰网址在线观看| 欧美专区日韩专区| 三级毛片在线播放| 啪啪啪亚洲无码| 亚洲高清中文字幕在线看不卡| 亚洲天堂网视频| 国产精品久久久久久搜索| 青青青伊人色综合久久| 波多野结衣第一页| 国产黄色片在线看| 久久这里只精品国产99热8| 国产jizz| 亚洲国产综合自在线另类| 香蕉eeww99国产在线观看| 国产福利微拍精品一区二区| 福利在线免费视频| 久久精品只有这里有| 国产精品xxx| 欧美国产视频|