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

2017-05-10 12:09:50 +08:00
 kyuuseiryuu
今天和项目讨论关于短信验证码存放;

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

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

项目是个小项目,并发不大。
6627 次点击
所在节点    问与答
36 条回复
wildcat007
2017-05-10 14:02:35 +08:00
新网案法规定,日志必须至少保留 180 天。(我瞎编的)
这种东西有日志总比没日志强~后期什么大数据分析,都是数据来源。
kyuuseiryuu
2017-05-10 14:18:47 +08:00
@wildcat007 感觉验证码没有大数据分析的价值哇,验证码规律和客户端 IP 或者手机号没有必然联系。
wildcat007
2017-05-10 14:30:46 +08:00
@kyuuseiryuu 感谢回复,我第一句只是调侃。验证码如果设置有失效时间,那么不用入库。但是一般请求验证码接口的一些信息,可能需要入库,比如 UA、IP 等等。
UA 主要是分辨 浏览器类型、版本、手机端等等,甚至可以获取系统信息、手机型号等等。
然后就是 IP 信息。
这些应该都是保存的吧。当出现问题的时候,这些数据都是有据可查的基础呀。
比如被人把短信接口做短信轰炸了?或者 某个地区的 访问量异常增加了?
domty
2017-05-10 14:34:11 +08:00
外部缓存 redis 之类的数据库里

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

以手机号为 key,验证码为 value。
不要放 session 里,毕竟你还要控制每个手机号的请求数量。
lianxiaoyi
2017-05-11 11:43:29 +08:00
有必要入库。。。记录上用户的 IP 以及其它很多信息。。。。不然短信被刷了你都不知道。。我就查到过。。。。。。。。。还有短信接口返回值也要记录。。。我们很多用户反馈收不到短信。。。这样就有数据可查。。。。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/360337

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX