日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

微信公众号爆出前端安全漏洞

發(fā)布時(shí)間:2024/6/21 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 微信公众号爆出前端安全漏洞 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

昨日在公眾號(hào)中挖掘到了一個(gè) XSS 安全漏洞,目前該漏洞已經(jīng)上報(bào)給騰訊,具體復(fù)現(xiàn)流程如下:

發(fā)一篇公眾號(hào)文章,標(biāo)題中包含<input onfocus="alert('1')">
用戶(hù)打開(kāi)文章后,在寫(xiě)留言頁(yè)面中會(huì)發(fā)現(xiàn)標(biāo)題沒(méi)有被轉(zhuǎn)義,正常被渲染成了 HTML
用戶(hù)點(diǎn)擊被渲染出來(lái)的輸入框后執(zhí)行代碼

漏洞產(chǎn)生過(guò)程

現(xiàn)在我們來(lái)分析下這個(gè)漏洞的產(chǎn)生過(guò)程:

首先標(biāo)題中存在 HTML <input onfocus="alert('1')">,在網(wǎng)頁(yè)中如果不對(duì)這部分文本做轉(zhuǎn)義的話(huà),就會(huì)正常渲染為 HTML。

在文章詳情中其實(shí)我們并沒(méi)有發(fā)現(xiàn)這個(gè)問(wèn)題,也就說(shuō)明了在該頁(yè)面中開(kāi)發(fā)者是做了文本轉(zhuǎn)義的。

但是在留言頁(yè)面中卻出現(xiàn)了該問(wèn)題,也就是說(shuō)開(kāi)發(fā)者并沒(méi)有做標(biāo)題的轉(zhuǎn)義,因此導(dǎo)致了這個(gè)問(wèn)題的發(fā)生。

雖然這個(gè)問(wèn)題觸發(fā)條件不是那么容易,但是對(duì)于微信這樣億級(jí)日活的產(chǎn)品出現(xiàn)這樣低級(jí)的安全問(wèn)題實(shí)屬?zèng)]想到。

我們把這樣的安全問(wèn)題稱(chēng)之為 XSS 攻擊。根據(jù)攻擊的來(lái)源,我們可以將此類(lèi)攻擊分為三種,分別為:

反射型
存儲(chǔ)型
DOM 型

在這個(gè)案例中我們遇到的是存儲(chǔ)型 XSS 攻擊。此類(lèi)攻擊是攻擊者將惡意代碼提交至服務(wù)器并保存在數(shù)據(jù)庫(kù)中,用戶(hù)訪(fǎng)問(wèn)該頁(yè)面觸發(fā)攻擊行為。這種類(lèi)型的攻擊常見(jiàn)于保存用戶(hù)編輯數(shù)據(jù)的場(chǎng)景下,比如案例中的發(fā)表文章,亦或者評(píng)論場(chǎng)景等等。

防范存儲(chǔ)型 XSS 攻擊的策略就是不相信一切用戶(hù)提交的信息,比如說(shuō)用戶(hù)的評(píng)論、發(fā)表的文章等等。對(duì)于這些信息一律進(jìn)行字符串轉(zhuǎn)義,主要是引號(hào)、尖括號(hào)、斜杠

function escape(str) {
  str = str.replace(/&/g, '&amp;')
  str = str.replace(/</g, '&lt;')
  str = str.replace(/>/g, '&gt;')
  str = str.replace(/"/g, '&quto;')
  str = str.replace(/'/g, ''')
  str = str.replace(/`/g, '`')
  str = str.replace(///g, '/')
  return str
}
// "&lt;script&gt;alert(1)&lt;/script&gt;"
escape('<script>alert(1)</script>')

但是在顯示富文本的場(chǎng)景下其實(shí)不能把所有的內(nèi)容都轉(zhuǎn)義了,因?yàn)檫@樣會(huì)把需要的格式也過(guò)濾掉。對(duì)于這種情況,通常考慮采用白名單過(guò)濾的辦法。

// 使用 js-xss 開(kāi)源項(xiàng)目
const xss = require('xss')
let html = xss('<h1 id="title">XSS</h1><script>alert("xss");</script>')
// -> <h1>XSS</h1>&lt;script&gt;alert("xss");&lt;/script&gt;
console.log(html)

在白名單的情況下,h1標(biāo)簽不會(huì)被轉(zhuǎn)義,但是script能被正常轉(zhuǎn)義。

最后

安全無(wú)小事,大家在做項(xiàng)目的時(shí)候應(yīng)該時(shí)刻關(guān)注在類(lèi)似場(chǎng)景下的可能出現(xiàn)的安全問(wèn)題。

歡迎大家來(lái)聊聊自己在項(xiàng)目中遇到的安全問(wèn)題。

總結(jié)

以上是生活随笔為你收集整理的微信公众号爆出前端安全漏洞的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。