成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

我是這樣搞懂一個(gè)神奇的BUG

J4ck_Chan / 703人閱讀

摘要:但是,不應(yīng)該啊我們是事先有做檢查的。一個(gè)請求成功返回,表示賬戶創(chuàng)建成功。自從年雙十一正式上線,累計(jì)處理了億錯(cuò)誤事件,付費(fèi)客戶有陽光保險(xiǎn)核桃編程荔枝掌門對微脈青團(tuán)社等眾多知名企業(yè)。

摘要: 通過分析用戶的行為,才想得到為什么會(huì)出現(xiàn)這種情況!

前兩天在BearyChat收到這樣的一個(gè)報(bào)警消息:

409 ?Conflict ? 平時(shí)很少遇到這樣的錯(cuò)誤,貌似很嚴(yán)重的樣子,嚇得我趕緊查看到底發(fā)生了什么。

仔細(xì)查看錯(cuò)誤詳情發(fā)現(xiàn)是因?yàn)槭褂猛粋€(gè)郵箱賬號(hào)多次注冊導(dǎo)致后面的請求數(shù)據(jù)庫直接報(bào)錯(cuò)。

但是,不應(yīng)該?。∥覀兪鞘孪扔凶鰴z查的。如果該郵箱已經(jīng)被注冊,會(huì)提醒并且不讓注冊的。難道對方是個(gè)黑客,直接調(diào)用API發(fā)請求?如果是這樣那就更加危險(xiǎn)了,我們已經(jīng)被黑客盯上了!

可是這樣做對黑客也沒什么好處啊,并且IP顯示為國內(nèi)地址,如果真的是黑客好歹用國外的地址吧。想了想,還是仔細(xì)分析到底出了什么問題吧。

再往下一看,發(fā)現(xiàn)自己完全是多想了。如果是黑客的話,下面的用戶行為就把他給完全暴露了!

這些用戶行為記錄默認(rèn)按照倒序排列,我們可以從下往上一條條看用戶的使用軌跡。通過用戶行為可以得知出錯(cuò)前的整個(gè)操作流程:

打開我們網(wǎng)站的首頁

點(diǎn)擊“免費(fèi)試用“進(jìn)入注冊頁面

輸入郵箱

輸入密碼

再次出入密碼

點(diǎn)擊創(chuàng)建團(tuán)隊(duì)

點(diǎn)擊創(chuàng)建團(tuán)隊(duì)

團(tuán)隊(duì)創(chuàng)建成功

報(bào)錯(cuò)

那么問題來了:有沒有什么異常的行為?
答:有!他點(diǎn)擊了創(chuàng)建團(tuán)隊(duì)兩次。

憑著我敏銳的嗅覺意識(shí)到可能是由于用戶快速點(diǎn)擊"創(chuàng)建團(tuán)隊(duì)"按鈕兩次導(dǎo)致。通過時(shí)間記錄發(fā)現(xiàn)第一次點(diǎn)擊是在1.86m,第二次在1.87m。也就是說:用戶在很短的時(shí)間內(nèi)快速點(diǎn)擊了兩次。

剛剛的用戶行為記錄過濾了網(wǎng)絡(luò)請求,接下里我們結(jié)合網(wǎng)絡(luò)請求一起分析:

可以發(fā)現(xiàn)有兩個(gè)/members/email的GET請求,并且都成功返回404,這里代碼的意思是指該郵箱尚未被注冊,可以被使用。一個(gè)/members/create請求成功返回200,表示賬戶創(chuàng)建成功。最后報(bào)錯(cuò)的/members/create請求失敗返回409。

到這里基本確定出錯(cuò)原因就是由于用戶快速點(diǎn)擊創(chuàng)建團(tuán)隊(duì)導(dǎo)致。
有沒有這種可能呢,嘗試復(fù)現(xiàn)一下看看唄!于是,我打開了注冊頁面,輸入郵箱和密碼,然后以超快的手速點(diǎn)擊創(chuàng)建團(tuán)隊(duì)N次。哈哈哈哈,不出所料,被我成功復(fù)現(xiàn)了!

只要能夠成功復(fù)現(xiàn),這個(gè)BUG基本上就算被解決了,接下來就是去分析如何優(yōu)化代碼防止出現(xiàn)這種情況了。有兩個(gè)思路:1. 用戶點(diǎn)擊之后,設(shè)置被點(diǎn)擊的按鈕無效直到點(diǎn)擊請求完全被處理;2. 將驗(yàn)證郵箱是否存在的和創(chuàng)建團(tuán)隊(duì)兩個(gè)異步事件想辦法合并為一個(gè)原子操作。綜合考慮,決定使用第一種方案。因?yàn)閷?shí)現(xiàn)簡單,對現(xiàn)有代碼改動(dòng)不大。

總的來說:當(dāng)在沒有堆棧信息或者報(bào)錯(cuò)信息難以理解的時(shí)候,F(xiàn)undebug記錄的用戶行為真的很有用。五星推薦前端開發(fā)接入到項(xiàng)目中!

關(guān)于Fundebug

Fundebug專注于JavaScript、微信小程序、微信小游戲、支付寶小程序、React Native、Node.js和Java線上應(yīng)用實(shí)時(shí)BUG監(jiān)控。 自從2016年雙十一正式上線,F(xiàn)undebug累計(jì)處理了10億+錯(cuò)誤事件,付費(fèi)客戶有陽光保險(xiǎn)、核桃編程、荔枝FM、掌門1對1、微脈、青團(tuán)社等眾多知名企業(yè)。歡迎大家免費(fèi)試用!

版權(quán)聲明

轉(zhuǎn)載時(shí)請注明作者Fundebug以及本文地址:

https://blog.fundebug.com/2017/09/06/fundebug-user-behavior-help-debug/

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/91796.html

相關(guān)文章

  • 搞懂JavaScript引擎運(yùn)行原理

    摘要:同步一次執(zhí)行一件事,同步引擎一次只執(zhí)行一行,是同步的。調(diào)用函數(shù)將其推入堆棧并從函數(shù)返回將其彈出堆棧。執(zhí)行上下文當(dāng)函數(shù)放入到調(diào)用堆棧時(shí)由創(chuàng)建的環(huán)境。執(zhí)行結(jié)果它會(huì)立即被推到回調(diào)隊(duì)列,但它仍然會(huì)等待調(diào)用堆棧為空才會(huì)執(zhí)行。 為了保證可讀性,本文采用意譯而非直譯。 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 一些名詞 JS引擎 — 一個(gè)讀取代碼并運(yùn)行的引擎,沒有單一的J...

    lastSeries 評論0 收藏0
  • 一次性搞懂JavaScript正則表達(dá)式之引擎

    摘要:總的來說,可以稱為文本主導(dǎo)的正則引擎,可以稱為表達(dá)式主導(dǎo)的正則引擎。首先,正則表達(dá)式在計(jì)算機(jī)看來只是一串符號(hào),正則引擎首先肯定要解析它。精通正則表達(dá)式書中說引擎不支持非貪婪模式,很明顯不是引擎。正則表達(dá)式中可以商榷的部分就叫做備選狀態(tài)。 本文是『horseshoe·Regex專題』系列文章之一,后續(xù)會(huì)有更多專題推出GitHub地址:https://github.com/veedrin/...

    hlcc 評論0 收藏0
  • 4 個(gè) useState Hook 示例

    摘要:示例使用顯示隱藏組件這個(gè)示例是一個(gè)組件,它顯示一些文本,并在末尾顯示一個(gè)鏈接,當(dāng)單擊鏈接時(shí),它展開剩下的文本。還有一個(gè)處理提交的函數(shù),其中,來阻止頁面刷新并打印出表單值。它使用傳遞一個(gè)對象,為了確?,F(xiàn)有的狀態(tài)不被覆蓋,這里使用了展開運(yùn)算。 為了保證的可讀性,本文采用意譯而非直譯。 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 到 React 16.8 目前為止,...

    ZweiZhao 評論0 收藏0
  • 狗子哥雖然失業(yè)了,但是生活才剛剛開始啊

    摘要:失業(yè)的兩周真的也是爽啊,每天打打球,去面試面試,當(dāng)作逛街。為什么走我一定是瘋了,我才辭職的吧。我一直覺得工作是自己喜歡,不是因?yàn)樯钏取eX,只是說能力的體現(xiàn)。但是不忘初心,善始善終,生活才剛剛開始啊。。。? 失業(yè)的第二周,一邊玩的很開心一邊又擔(dān)心工作,一邊投簡歷一邊面試,一邊嫌棄廠太小不想去,一邊大廠又沒有消息,糾結(jié)糾結(jié)。 ? 從大一暑假邊上課邊工作到后來全職工作,其中寒暑假無休,畢業(yè)跟實(shí)...

    snifes 評論0 收藏0
  • 業(yè)務(wù)開發(fā)中調(diào)試方法總結(jié)

    摘要:業(yè)務(wù)開發(fā)中的調(diào)試方法總結(jié)這段時(shí)間,接觸了單元測試,同時(shí)業(yè)務(wù)中遇到了一些需要排錯(cuò)調(diào)試的情況,就把自己的經(jīng)驗(yàn)做個(gè)小結(jié)。但是如果你的業(yè)務(wù)經(jīng)常變化,但是變化的部分并不會(huì)影響單元測試,那這種情況下的單元測試性價(jià)比就很高。 業(yè)務(wù)開發(fā)中的調(diào)試方法總結(jié) 這段時(shí)間,接觸了單元測試,同時(shí)業(yè)務(wù)中遇到了一些需要排錯(cuò)調(diào)試的情況,就把自己的經(jīng)驗(yàn)做個(gè)小結(jié)。 3種調(diào)試方法 狼叔說,常見的三種調(diào)試的境界 初級: 打l...

    KaltZK 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<