短信验证码应该入库还是只在内存中暂存? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Chemist
V2EX    问与答

短信验证码应该入库还是只在内存中暂存?

  •  
  •   Chemist 2017-05-10 12:09:50 +08:00 8019 次点击
    这是一个创建于 3157 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天和项目讨论关于短信验证码存放;

    我的主要观点是:放内存中,比如 Session 或者 ServletContext。

    项目经理的观点是:放数据库里。

    项目是个小项目,并发不大。
    36 条回复    2017-05-11 11:43:29 +08:00
    ys0290
        1
    ys0290  
       2017-05-10 12:16:45 +08:00 via iPhone
    过一会儿就失效的东西入库干嘛
    zuk
        2
    zuk  
       2017-05-10 12:19:40 +08:00 via iPhone
    事后审计,不过意义不大吧
    Weny
        3
    Weny  
       2017-05-10 12:20:10 +08:00 via iPhone   1
    redis
    Chemist
        4
    Chemist  
    OP
       2017-05-10 12:28:07 +08:00 via Android
    @ys0290 对呀我也觉得很奇怪。
    Chemist
        5
    Chemist  
    OP
       2017-05-10 12:29:08 +08:00 via Android
    @zuk 确实,如果是邀请码之类的我觉得是有必要入库的。
    jarlyyn
        6
    jarlyyn  
       2017-05-10 12:30:11 +08:00
    项目管细节么?

    项目不是应该提细节么?

    比如

    “验证码能够保留在服务器上 XXX 时间,以便随时审核”
    Chemist
        7
    Chemist  
    OP
       2017-05-10 12:31:55 +08:00 via Android   1
    @Weny 我也是这么和项目经理说的,memcache, redis 之类的他说要搞分布式数据库才上那些东西。我感觉内存型数据库和关系型数据库的分布式没有必然联系哇~
    Chemist
        8
    Chemist  
    OP
       2017-05-10 12:33:14 +08:00 via Android
    @jarlyyn 并没有这种细节,只有 IP 请求数量限制,手机号请求数量限制以及过期时间限制。
    actto
        9
    actto  
       2017-05-10 12:48:27 +08:00 via Android
    发短信不要钱吗?入库好统计成本。
    quickma
        10
    quickma  
       2017-05-10 12:52:57 +08:00
    嗯,项目经理为什么要管这个?
    Chemist
        11
    Chemist  
    OP
       2017-05-10 12:55:30 +08:00 via Android
    @actto 原来如此,他肯定也没想到这点~
    Chemist
        12
    Chemist  
    OP
       2017-05-10 12:57:57 +08:00 via Android
    @x7395759 小公司,开发才 5 个人,包括我 3 个实习生。项目经理算是一个,还有个前端。项目经理他负责搭框架写,写计划之类的。
    quickma
        13
    quickma  
       2017-05-10 13:02:46 +08:00
    @kyuuseiryuu 那就没啥好说了,存库还是存 redis 还是存 session 都没有关系,只要能用就行。

    常规存 session 和 redis,存库审计和统计成本是没意义的,感觉项目经理想法有些固定。
    hoythan
        14
    hoythan  
       2017-05-10 13:05:45 +08:00
    你大还是他大? 他大就听他的.
    xinyewdz
        15
    xinyewdz  
       2017-05-10 13:10:24 +08:00
    建议入库,统计和审查都比较方便。一般的项目,日志都需要保存几个月。更何况这种业务数据。
    reed1992
        16
    reed1992  
       2017-05-10 13:19:45 +08:00   1
    入库,业务方使用方便
    akira
        17
    akira  
       2017-05-10 13:23:52 +08:00   1
    我的话 就会要求入库或者日志。

    生产服上面的日志,从来只会嫌少 不会嫌多的。
    Chemist
        18
    Chemist  
    OP
       2017-05-10 13:30:11 +08:00 via Android
    @hoythan
    表情(小纠结)
    Chemist
        19
    Chemist  
    OP
       2017-05-10 13:30:40 +08:00 via Android
    @xinyewdz 原来如此。
    ideascf
        20
    ideascf  
       2017-05-10 13:42:35 +08:00   1
    入库就入呗, 当你遇到让你去日志里面捞验证码的时候,你就明白项目经理是对的了
    wildcat007
        21
    wildcat007  
       2017-05-10 14:02:35 +08:00   1
    新网案法规定,日志必须至少保留 180 天。(我瞎编的)
    这种东西有日志总比没日志强~后期什么大数据分析,都是数据来源。
    Chemist
        22
    Chemist  
    OP
       2017-05-10 14:18:47 +08:00 via Android
    @wildcat007 感觉验证码没有大数据分析的价值哇,验证码规律和客户端 IP 或者手机号没有必然联系。
    wildcat007
        23
    wildcat007  
       2017-05-10 14:30:46 +08:00
    @kyuuseiryuu 感谢回复,我第一句只是调侃。验证码如果设置有失效时间,那么不用入库。但是一般请求验证码接口的一些信息,可能需要入库,比如 UA、IP 等等。
    UA 主要是分辨 浏览器类型、版本、手机端等等,甚至可以获取系统信息、手机型号等等。
    然后就是 IP 信息。
    这些应该都是保存的吧。当出现问题的时候,这些数据都是有据可查的基础呀。
    比如被人把短信接口做短信轰炸了?或者 某个地区的 访问量异常增加了?
    domty
        24
    domty  
       2017-05-10 14:34:11 +08:00   1
    外部缓存 redis 之类的数据库里

    往程序内存里写的话你重新发布的时候怎么办,强制所有短信验证码失效?
    至于统计,写日志里就行
    Chemist
        25
    Chemist  
    OP
       2017-05-10 15:04:36 +08:00 via Android
    @wildcat007 嗯~有道理。
    ChoateYao
        26
    ChoateYao  
       2017-05-10 16:37:48 +08:00
    写成可配置存储验证码,要进数据库就进数据库,要进内存就进内存。
    如果下次说要写进文件呢?
    Ouyangan
        27
    Ouyangan  
       2017-05-10 17:10:55 +08:00
    redis , 统计用日志呗
    Chemist
        28
    Chemist  
    OP
       2017-05-10 18:17:18 +08:00 via Android
    @ChoateYao 老司机~机智又厉害
    fxxkgw
        29
    fxxkgw  
       2017-05-10 18:36:55 +08:00
    第一眼看到这个问题 我以为 LZ 是想说手机收到验证码是不是可以在超时后自动销毁 省的一大堆在短信里碍眼 看来我想多了。。
    senghoo
        30
    senghoo  
       2017-05-10 18:55:18 +08:00   1
    使用 OTP 算法生成验证码和做验证。
    这样时间有效期和生成,校验一起搞定了。
    Chemist
        31
    Chemist  
    OP
       2017-05-10 19:14:56 +08:00 via Android
    @senghoo 学到了~ cool
    wanglaihuai
        32
    wanglaihuai  
       2017-05-10 20:56:34 +08:00 via Android
    @hoythan 这是最实在的回答了,哈哈哈,赞一个。
    lan894734188
        33
    lan894734188  
       2017-05-10 20:59:01 +08:00 via Android
    redis 后慢慢存库
    wdd2007
        34
    wdd2007  
       2017-05-10 21:23:43 +08:00
    小项目,并发不大,入库就入库呗。
    whileFalse
        35
    whileFalse  
       2017-05-10 22:31:34 +08:00
    @senghoo 有必要吗? redis 自带过期啊

    以手机号为 key,验证码为 value。
    不要放 session 里,毕竟你还要控制每个手机号的请求数量。
    lianxiaoyi
        36
    lianxiaoyi  
       2017-05-11 11:43:29 +08:00   1
    有必要入库。。。记录上用户的 IP 以及其它很多信息。。。。不然短信被刷了你都不知道。。我就查到过。。。。。。。。。还有短信接口返回值也要记录。。。我们很多用户反馈收不到短信。。。这样就有数据可查。。。。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4379 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 09:39 PVG 17:39 LAX 01:39 JFK 04:39
    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