涂風(fēng)濤 楊晨霞
摘要:XSS漏洞可以分為三種類(lèi)型:反射型、持久型和基于DOM的XSS漏洞。該文主要研究這三種不同類(lèi)型漏洞的產(chǎn)生原因、攻擊方法和防御技術(shù)。
關(guān)鍵詞:反射型XSS;持久型XSS;基于DOM的XSS
中圖分類(lèi)號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)11-0061-03
Abstract: There are three types of XSS vulnerabilities: reflection vulnerabilities, persistent vulnerabilities, and DOM-based XSS vulnerabilities. This article focuses on the causes, attack methods, and defense techniques of these three different types of vulnerabilities.
Key words: reflection XSS;persistent XSS;DOM-based XSS
1 背景
一般的Web程序攻擊以服務(wù)器應(yīng)用程序?yàn)槟繕?biāo),目的是執(zhí)行非授權(quán)動(dòng)作或者非法訪問(wèn)數(shù)據(jù)。而跨站腳本攻擊(Cross Site Script,XSS),它屬于另外一種類(lèi)型,因?yàn)樗墓裟繕?biāo)是Web程序的其他用戶(hù)。XSS是在Web程序中發(fā)現(xiàn)的最為普遍的漏洞,它常常與其他漏洞一起造成破壞性的后果,有時(shí)甚至可以演變?yōu)榱四撤N自我繁殖的蠕蟲(chóng)。
2 反射型XSS
如果Web程序用動(dòng)態(tài)頁(yè)面向用戶(hù)顯示錯(cuò)誤消息,就容易造成反射型XSS漏洞。以下給出了低安全性反射型漏洞的代碼示例,該代碼接收請(qǐng)求參數(shù)“_GET[‘name]”并且在返回頁(yè)面中直接寫(xiě)入該參數(shù)的值。
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// 將用戶(hù)的輸入置入輸出頁(yè)面
$html .= '
Hello ' . $_GET[ 'name' ] . '';
}
如果用戶(hù)輸入“yiwen”,Web程序返回“Hello yiwen”的頁(yè)面。但是當(dāng)攻擊者嘗試輸入“yiwen