概念
跨站腳本(Cross-site scripting):通常簡(jiǎn)稱為XSS,是一種網(wǎng)站應(yīng)用程序的安全漏洞攻擊,是代碼注入的一種。它允許惡意用戶將代碼注入到網(wǎng)頁(yè)上,其他用戶在觀看網(wǎng)頁(yè)時(shí)就會(huì)受到影響。這類攻擊通常包含了HTML以及用戶端腳本語(yǔ)言。
XSS攻擊通常指的是通過(guò)利用網(wǎng)頁(yè)開發(fā)時(shí)留下的漏洞,通過(guò)巧妙地方法注入惡意指令代碼到網(wǎng)頁(yè),使用戶加載并執(zhí)行攻擊者惡意制造的網(wǎng)頁(yè)程序。這些惡意網(wǎng)頁(yè)程序通常是JavaScript,但實(shí)際上也可以包括Java,VBScript,ActiveX,F(xiàn)lash或者甚至是普通的HTML。攻擊成功后,攻擊者可能得到更高的權(quán)限、私密網(wǎng)頁(yè)內(nèi)容、會(huì)話或cookie等各種內(nèi)容。
攻擊手段和目的
攻擊者使被攻擊者在瀏覽器中執(zhí)行腳本后,如果需要收集來(lái)自被攻擊者的數(shù)據(jù)(如cookie或其他敏感信息),可以自行架設(shè)一個(gè)網(wǎng)站,讓被攻擊者通過(guò)JavaScript等方式把收集好的數(shù)據(jù)作為參數(shù)提交,隨后以數(shù)據(jù)庫(kù)等形式記錄在攻擊者自己的服務(wù)器上。
常見(jiàn)的XSS攻擊手段和目的有:
- 盜用cookie,獲取敏感信息。
- 利用植入Flash,通過(guò)crossdomain權(quán)限設(shè)置進(jìn)一步獲取更高權(quán)限;或者利用Java等得到類似的操作。
- 利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻擊)用戶的身份執(zhí)行一些管理動(dòng)作,或執(zhí)行一些一般的如發(fā)微博、加好友、發(fā)私信等操作。
- 利用可被攻擊的域受到其他域信任的特點(diǎn),以受信任來(lái)源的身份請(qǐng)求一些平時(shí)不允許的操作。
- 在訪問(wèn)量極大的一些頁(yè)面上的XSS可以攻擊一些小型網(wǎng)站,實(shí)現(xiàn)DDos攻擊的效果。
漏洞的防御和利用
- 過(guò)濾特殊字符
避免XSS的方法之一主要是將用戶所提供的內(nèi)容進(jìn)行過(guò)濾,許多語(yǔ)言都有提供對(duì)HTML的過(guò)濾。 - 使用HTTP頭指定類型
許多時(shí)候可以使用HTTP頭指定內(nèi)容的類型,使得輸出的內(nèi)容避免被作為HTML解析。即可強(qiáng)行指定輸出內(nèi)容為文本/JavaScript腳本(順便指定了內(nèi)容編碼),而非可以引發(fā)攻擊的HTML。 - 用戶方面
大多數(shù)瀏覽器都有關(guān)閉JavaScript的選項(xiàng),但關(guān)閉功能并非是最好的方法,因?yàn)樵S多網(wǎng)站都需要使用JavaScript語(yǔ)言才能正常運(yùn)作。通常來(lái)說(shuō),一個(gè)經(jīng)常有安全更新推出的瀏覽器,在使用上會(huì)比很久都沒(méi)有更新的瀏覽器更為安全。