<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      防止重復請求攻擊

      今天發(fā)現(xiàn)自己項目一個漏洞:先為一賬戶充值100元,然后瞬間發(fā)送10次提現(xiàn)請求(都是提現(xiàn)100,提現(xiàn)接口是有做余額不足校驗的),其中大約有四五次都是成功的,剩下的會報余額不足。期望是,只有一次可以成功完成提現(xiàn),分析到能部分請求能通過余額不足校驗原因是,由于是瞬間發(fā)出的提現(xiàn)請求,這些請求中拿到的余額數(shù)據(jù)都是余額扣減之前的數(shù)據(jù)。

      以上場景可以提煉出兩個關鍵步驟:

      1. 查詢余額并校驗,select * from account where user_id = 123;
      2. 扣減余額并支付,update account set balance...

      根據(jù)以上步驟,可知:1.在兩條SQL語句執(zhí)行的中間這段時間,由于重復請求攻擊,可能會出現(xiàn)多次請求的第一步操作成功,并繼續(xù)執(zhí)行第二步,最后導致資金損失。2.由于第一步操作是查詢操作,沒有數(shù)據(jù)庫會限制重復讀取數(shù)據(jù),數(shù)據(jù)庫層面是沒有可能解決這個問題的,所以不用在這個上面浪費時間。

      目前的解決方案是:為接口上鎖。已經(jīng)有人做了輪子,比如redis-lock。以用戶ID為key,某個uuid為值。將類似提現(xiàn)這樣的接口上鎖。同一用戶在訪問添加了該中間件的接口時,第一次沒有執(zhí)行完畢,拒絕執(zhí)行第二個請求。第一次執(zhí)行完畢時,釋放鎖,即清除redis緩存的鍵值對。同時可設定,緩存時長,以防中途宕機,鎖未釋放等問題。具體實現(xiàn)可以參考npm包redis-lock文檔。

      posted @ 2019-02-25 17:46  土拉發(fā)子  Views(1262)  Comments(1)    收藏  舉報
      主站蜘蛛池模板: 亚洲欧美日韩综合久久久| 国产午夜一区二区在线观看| 四虎在线播放亚洲成人| 99riav精品免费视频观看| 日韩中文字幕高清有码| 久久久久久曰本av免费免费| 亚洲中文字幕av天堂| 久色伊人激情文学你懂的| 性色a∨精品高清在线观看| 亚洲一区二区三区啪啪| 国产av综合影院| 亚洲综合日韩av在线| 欧美国产日韩在线三区| 亚洲无码精品视频| 尤物国精品午夜福利视频| 国产精品成人免费视频网站京东| 德兴市| 午夜丰满少妇性开放视频| 亚洲欧美国产日韩天堂区| 国产精品久久无码不卡黑寡妇| 久久精品中文字幕少妇| 日韩精品中文字幕第二页| 在线免费观看亚洲天堂av| 亚洲第一极品精品无码久久| 亚洲男人第一无码av网站| 亚洲精品一区二区动漫| 美女裸体十八禁免费网站| 成人性无码专区免费视频| 国产精品综合av一区二区| 91久久精品美女高潮不断| 国产高清在线男人的天堂| 天堂网在线.www天堂在线资源| 97中文字幕在线观看| 国产一区二区日韩在线| 国产喷水1区2区3区咪咪爱AV| 久久久久成人片免费观看蜜芽| 欧美另类精品xxxx人妖| 激情97综合亚洲色婷婷五| 国产精品午夜福利视频| 激情综合五月网| 国产美女69视频免费观看|