试图反向推理一个 BUG - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
arect
V2EX    程序员

试图反向推理一个 BUG

  •  
  •   arect 316 天前 2164 次点击
    这是一个创建于 316 天前的主题,其中的信息可能已经有所发展或是发生改变。

    首先提示:我不知道答案

    总部做了一个页面,可以让我们查数据,但是我发现了一个神奇的 BUG:

    • 不设置范围的时候可以看到一项值为7234128.60的数据
    • 筛选范围为7000000~7300000时仍然可以搜到
    • 筛选范围为7200000~7300000的时候就搜不到了

    看前端请求参数是请求的"7200000"这样的字符串,可惜忘记看返回数据的形式了。

    现在页面临时下线,纠结了半天是怎么实现这样的 BUG 的。有没有大佬遇到过类似的问题?

    21 条回复    2024-12-07 17:51:19 +08:00
    duanxianze
        1
    duanxianze  
       316 天前
    后端什么语言?是否发生了类型转换?
    Ayanokouji
        2
    Ayanokouji  
       316 天前
    用 curl 测测 api ,能复现就是后端的 bug ,不能复现就是前端的 bug
    arect
        3
    arect  
    OP
       316 天前
    @duanxianze #1 后端是 Java ,数据库不太清楚,不过肯定是国产的。
    arect
        4
    arect  
    OP
       316 天前
    @Ayanokouji #2 是后端 Bug ,筛选之后返回确实是空的。
    h1298841903
        5
    h1298841903  
       316 天前
    会不会是由于缓存问题?或者这条数据已经被删除了?
    luciankaltz
        6
    luciankaltz  
       316 天前
    首先,能保证查询的数据集合本身是不变的吗?

    也就是没人操作这个表里面数据的新增和删减之类的操作
    newaccount
        7
    newaccount  
       316 天前
    看一下数据库的数据格式是不是字符串
    如果不是,再查一下 java 查询的时候是不是当字符串传进去的
    arect
        8
    arect  
    OP
       316 天前
    @h1298841903 @luciankaltz #5 #6
    不会的,这个数字其实就是一笔交易的金额,我每种条件筛了好几次都是有问题。
    (其实还有更大的问题,按名字筛选会漏掉部分数据)
    newaccount
        9
    newaccount  
       316 天前
    @newaccount #7 看起来是按照字符串排序导致的,但具体是哪里就得摸查一下了
    arect
        10
    arect  
    OP
       316 天前
    @newaccount #7 可惜我只是异地部门的小员工,看不了。
    sngxx
        11
    sngxx  
       316 天前
    没有日志吗
    luciankaltz
        12
    luciankaltz  
       316 天前
    @inspiration2030 #8 那就要看是业务逻辑处理返回的时候有问题(比如上面说的 js/后端 java 处理格式之类的),还是数据库本身的返回结果有问题了。都不是没可能,谁知道底下代码是怎么写的(

    都无从猜起(
    arect
        13
    arect  
    OP
       316 天前
    @luciankaltz #12 哈哈哈,就是因为无从下手,所以一个人想了半天想不出。
    arect
        14
    arect  
    OP
       316 天前
    @sngxx #11 没有,单反能正向查,我都不会反向想这么久,哈哈哈。
    eInKLX6Kh6sS3wyc
        15
    eInKLX6Kh6sS3wyc  
       316 天前
    int/long 越界?
    cowcomic
        16
    cowcomic  
       316 天前   1
    首先通过测试不断的确定到底什么参数能精确返回或精确不返回这个值,二分法不断分割
    另外考虑上下界的问题
    比如:7200000~7300000 这个查不出来,7199999~7300000 这个呢?

    只要不是偶现问题,通过这种方法一定能找到一个确定的边界,要么进入这个边界就能查出来,要么就是进入这个边界一定查不出来
    等确定好这个边界,才好推测
    eInKLX6Kh6sS3wyc
        17
    eInKLX6Kh6sS3wyc  
       316 天前
    float 越界了
    COW
        18
    COW  
       316 天前 via Android
    分布式数据库?
    orioleq
        19
    orioleq  
       316 天前 via iPhone
    神奇的 bug 就别拿上来说浪费大家时间了,谁知道是不是压根后端筛选的字段就跟前端不是同一个。比如说后端 filter 的数字其实是另一个税后栏位本来就是小于 7200000 的。
    自己看吧,解决了再发上来给我们乐乐。
    spritecn
        20
    spritecn  
       315 天前
    可能有一个用于快速查询的百万位缓存(数据库或缓存),这个位存的时候没有进位,但是查询的时候值被进位了
    如果你们订单都是百万级别的话,这个想法还是好的,但入库/查询没对齐,测试还没复现
    虽然这么做个人觉得收益不大
    kneo
        21
    kneo  
       315 天前 via Android
    看下后端实际执行的 quey 是什么,基本上就能定位问题了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1403 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 16:54 PVG 00:54 LAX 09:54 JFK 12:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86