CSRF和XSS

參考:https://tech.meituan.com/2018/10/11/fe-security-csrf.html

一仇让、CSRF(跨站偽造請(qǐng)求)

首先丧叽,CSRF是攻擊者對(duì)瀏覽器的欺騙。

攻擊者誘導(dǎo)受害者進(jìn)入第三方網(wǎng)站假瞬,在第三方網(wǎng)站中,向被攻擊網(wǎng)站發(fā)送跨站請(qǐng)求懦傍。利用受害者在被攻擊網(wǎng)站已經(jīng)獲得注冊(cè)憑證(cookie)芦劣,繞過(guò)后臺(tái)用戶驗(yàn)證,達(dá)到冒充用戶對(duì)被攻擊網(wǎng)站執(zhí)行某項(xiàng)操作的目的寸认。

流程:

  1. 受害者登錄A網(wǎng)站(a.com)串慰,保留了登錄憑證Cookie
  2. 攻擊者誘導(dǎo)受害者訪問b.com
  3. b.com向a.com發(fā)請(qǐng)求:a.com/act=xx。瀏覽器會(huì)以為是用戶發(fā)請(qǐng)求灸叼,就默認(rèn)攜帶a.com的Cookie
  4. a.com接收到請(qǐng)求后庆捺,對(duì)請(qǐng)求進(jìn)行驗(yàn)證,并確認(rèn)是受害者的憑證捉腥,誤以為是受害者自己發(fā)送的請(qǐng)求你画。
  5. a.com以受害者的名義執(zhí)行了act=xx。
    6.攻擊完成拟逮,攻擊者在受害者不知情的情況下剥槐,冒充受害者,讓a.com執(zhí)行了自己定義的操作颅崩。


栗子:

一沿后、GET類型的CSRF

假如博客園有個(gè)加關(guān)注的GET接口朽砰,blogUserGuid參數(shù)很明顯是關(guān)注人Id喉刘,如下:


然后我只用在我的博客里加一個(gè)img標(biāo)簽


就有人會(huì)打開博客睦裳,自動(dòng)加關(guān)注廉邑。

二倒谷、POST類型的CSRF

假如還是有個(gè)加關(guān)注的接口,不過(guò)已經(jīng)限制了只獲取POST請(qǐng)求的數(shù)據(jù)牵祟。這個(gè)時(shí)候就做一個(gè)第三方的頁(yè)面抖格,誘惑用戶去打開,打開過(guò)的用戶就中招了筝尾。


最好要加一層iframe,因?yàn)椴患觟frame頁(yè)面會(huì)重定向站辉,降低攻擊的隱蔽性。弄一個(gè)表單殊霞,用戶已打開,就自動(dòng)提交绷蹲。

特點(diǎn):

  1. 攻擊一般發(fā)起在第三方網(wǎng)站顾孽,而不是被攻擊的網(wǎng)站。被攻擊的網(wǎng)站無(wú)法防止攻擊發(fā)生拦英。
  2. 攻擊利用受害者在被攻擊網(wǎng)站的登錄憑證测秸,冒充受害者提交操作灾常;而不是直接竊取數(shù)據(jù)钞瀑。
  3. 整個(gè)過(guò)程攻擊者并不能獲取到受害者的登錄憑證慷荔,僅僅是“冒用”。
  4. 跨站請(qǐng)求可以用各種方式:圖片URL监徘、超鏈接吧碾、CORS、Form提交等等户敬。部分請(qǐng)求方式可以直接嵌入在第三方論壇睁本、文章中,難以進(jìn)行追蹤抄瑟。

CSRF通常是跨域的枉疼,因?yàn)橥庥蛲ǔ8菀妆还粽哒瓶亍5侨绻居蛳掠腥菀妆焕玫墓δ埽?strong>比如可以發(fā)圖和鏈接的論壇和評(píng)論區(qū)惹资,攻擊可以直接在本域下進(jìn)行航闺,而且這種攻擊更加危險(xiǎn)。

防護(hù)策略:

一般CSRF由第三方網(wǎng)站發(fā)起侮措,你無(wú)法防止被攻擊福铅,只能增強(qiáng)自己網(wǎng)站的防御能力來(lái)提升安全性。
CSRF有兩個(gè)特點(diǎn):

  1. 通常發(fā)生在第三方域名
  2. CSRF攻擊者只是使用Cookie笆包,但是不能獲取Cookie

針對(duì)這兩點(diǎn),有如下防御措施:

1. 同源檢測(cè)

檢查請(qǐng)求頭的referer和origin庵佣。
對(duì)于origin,可直接確定域名通今,不含有query和path肛根。
但是,有些情況臼氨,origin不存在芭届,如IE11的cors請(qǐng)求,褂乍,302重定向。(因?yàn)橹囟ㄏ蚨际嵌际钦?qǐng)求新的服務(wù)器的url屡拨,瀏覽器不想把此服務(wù)器的源泄露給新的服務(wù)器褥实。)
對(duì)于referer,referer是瀏覽器掛上的,但是referer可以通過(guò)手動(dòng)設(shè)置referer policy給隱藏掉叫胖,攻擊者可以發(fā)不帶referer字段的請(qǐng)求。
因此怎棱,攔截沒有origin和referer的請(qǐng)求绷跑,十分重要。
但是對(duì)于在本域的csrf谬运,這種檢測(cè)是防御不了的。

2. CSRF token

這個(gè)是基于攻擊者無(wú)法獲取用戶的信息(cookie梆暖、header和網(wǎng)頁(yè))。csrf之所以成功是因?yàn)榉?wù)器識(shí)別不出來(lái)到底是攻擊者網(wǎng)站發(fā)的請(qǐng)求還是用戶發(fā)的厚掷。
因此我們要求用戶請(qǐng)求都攜帶一個(gè)csrf無(wú)法獲取到的token。
在用戶打開頁(yè)面的時(shí)候冒黑,服務(wù)器給用戶生成一個(gè)隨機(jī)字符串+日期的token勤哗,token也放在服務(wù)器的session中,之后再加載頁(yè)面豁延,用js遍歷dom樹,給所有的form和a標(biāo)簽加token诱咏。
對(duì)于get請(qǐng)求缴挖,token加載query里,對(duì)于post幻林,如表單冲甘,token加載value里。
這個(gè)方法在沒有泄露token的話是十分安全的砌梆,但是對(duì)于所有的頁(yè)面及里面的表單進(jìn)行token驗(yàn)證贬循,不能有一種通用的攔截方式來(lái)統(tǒng)一攔截,對(duì)于后臺(tái)來(lái)講烂瘫,攔截檢查工作量大。

3. 雙重Cookie

1.1. 在用戶訪問網(wǎng)站頁(yè)面時(shí)坟比,向請(qǐng)求域名注入一個(gè)Cookie,內(nèi)容為隨機(jī)字符串
2.2 在前端向后端發(fā)起請(qǐng)求時(shí)怜校,取出Cookie注竿,并添加到URL的參數(shù)中
3.3 后端接口驗(yàn)證Cookie中的字段與URL參數(shù)中的字段是否一致,不一致則拒絕

優(yōu)點(diǎn):
1.無(wú)需使用Session裙顽,適用面更廣,易于實(shí)施愈犹。
2.Token儲(chǔ)存于客戶端中闻丑,不會(huì)給服務(wù)器帶來(lái)壓力。
3.相對(duì)于Token勋锤,實(shí)施成本更低侥祭,可以在前后端統(tǒng)一攔截校驗(yàn),而不需要一個(gè)個(gè)接口和頁(yè)面添加谈宛。

缺點(diǎn):
1.如果有其他漏洞(例如XSS)胎署,攻擊者可以注入Cookie,那么該防御方式失效径筏。
2.難以做到子域名的隔離障陶。

4. samesite Cookie

Set-Cookie響應(yīng)頭中新增的屬性聊训,由strict 和lax 模式,strick模式下的cookie鼓寺,若由第三方網(wǎng)站請(qǐng)求,請(qǐng)求中不會(huì)含有這個(gè)cookie字段妈候。lax相反,為第三方cookie啸胧。

栗子:假如淘寶網(wǎng)站用來(lái)識(shí)別用戶登錄與否的 Cookie 被設(shè)置成了 Samesite=Strict幔虏,那么用戶從百度搜索頁(yè)面甚至天貓頁(yè)面的鏈接點(diǎn)擊進(jìn)入淘寶后,淘寶都不會(huì)是登錄狀態(tài)陷谱,因?yàn)樘詫毜姆?wù)器不會(huì)接受到那個(gè) Cookie,其它網(wǎng)站發(fā)起的對(duì)淘寶的任意請(qǐng)求都不會(huì)帶上那個(gè) Cookie烟逊。

二、XSS(跨網(wǎng)站腳本攻擊)

  1. 攻擊者通過(guò)在目標(biāo)網(wǎng)站上注入惡意腳本宪躯,使之在用戶的瀏覽器上運(yùn)行眷唉。利用這些惡意腳本,攻擊者可獲取用戶的敏感信息如 Cookie冬阳、SessionID 等党饮,進(jìn)而危害數(shù)據(jù)安全肝陪。
  2. 惡意代碼未經(jīng)過(guò)濾刑顺,與網(wǎng)站正常的代碼混在一起;瀏覽器無(wú)法分辨哪些腳本是可信的狼讨,導(dǎo)致惡意腳本被執(zhí)行。
  3. 在部分情況下政供,由于輸入的限制布隔,注入的惡意腳本比較短。但可以通過(guò)引入外部的腳本(重定向)招刨,并由瀏覽器執(zhí)行,來(lái)完成比較復(fù)雜的攻擊策略沉眶。

防御:

XSS攻擊有兩要素

  1. 攻擊者提交惡意代碼
  2. 瀏覽器無(wú)法識(shí)別惡意代碼沦寂,就執(zhí)行惡意代碼淘衙。

對(duì)于攻擊者提交惡意代碼,我們可以想辦法過(guò)濾毯侦。

對(duì)于后端具垫,在把代碼寫入數(shù)據(jù)庫(kù)前,進(jìn)行轉(zhuǎn)義卦碾,如把<變成&lt

對(duì)于前端起宽,盡量不要自己拼接html,盡量用text方法绿映,html字符識(shí)別會(huì)自動(dòng)識(shí)別標(biāo)簽腐晾。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末藻糖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子巨柒,更是在濱河造成了極大的恐慌,老刑警劉巖疹鳄,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芦岂,死亡現(xiàn)場(chǎng)離奇詭異禽最,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)呛占,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門懦趋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)仅叫,“玉大人,你說(shuō)我怎么就攤上這事诫咱。” “怎么了竟痰?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵坏快,是天一觀的道長(zhǎng)哄尔。 經(jīng)常有香客問我,道長(zhǎng)富拗,這世上最難降的妖魔是什么啃沪? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任创千,我火速辦了婚禮,結(jié)果婚禮上追驴,老公的妹妹穿的比我還像新娘。我一直安慰自己暇咆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布丙曙。 她就那樣靜靜地躺著爸业,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亏镰。 梳的紋絲不亂的頭發(fā)上扯旷,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音索抓,去河邊找鬼钧忽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛纸兔,可吹牛的內(nèi)容都是我干的惰瓜。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼汉矿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼崎坊!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起洲拇,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赋续,沒想到半個(gè)月后蛾绎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體租冠,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年捏题,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了公荧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稚矿。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡朱灿,死狀恐怖盗扒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情褥影,我是刑警寧澤凡怎,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站房匆,受9級(jí)特大地震影響浴鸿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宠页,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一烤宙、第九天 我趴在偏房一處隱蔽的房頂上張望躺枕。 院中可真熱鬧,春花似錦叉瘩、人聲如沸粘捎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)梧奢。三九已至亲轨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蹦锋,已是汗流浹背莉掂。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工库正, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人喷楣。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親捣炬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348