是否应将 1 次使用的数据(如验证码)存储在同一张表中

Posted

技术标签:

【中文标题】是否应将 1 次使用的数据(如验证码)存储在同一张表中【英文标题】:Should 1-time use data like verification code to be stored in the same table 【发布时间】:2011-06-26 22:03:46 【问题描述】:

当用户注册帐户时,我会发出一个验证码,稍后用于验证该帐户。验证后,该帐户会被标记为verified=1,并且验证码会被删除。验证码之类的数据是不是应该放在一个单独的表里?

【问题讨论】:

您为什么认为将其放在单独的表格中可能会更好? 【参考方案1】:

如果您打算存储一些其他数据,例如verificationDate、ipAddress 等,您应该使用不同的表来存储验证信息。但是如果你不打算使用任何数据,而是使用“已验证”列,关于验证,同一张表中只能存储一列,

【讨论】:

存储额外的数据是常见的做法吗? 如果在一定时间后没有使用,您可能希望验证码过期,因此您可能需要存储时间戳 @zmol:我通常使用额外的信息,这可以帮助我做出一些决定。而且,在我看来,您应该使用一些您认为可以帮助您做出决定的额外信息。【参考方案2】:

将临时数据与非临时数据分开存储当然要好得多。无需将该密钥存储在帐户表中。将一些带有 FK 的 tblVerificationCodes 用于帐户表、时间戳等,并尽可能从该表中删除(或归档,如果需要)数据。这是一种很好的风格。

【讨论】:

以上是关于是否应将 1 次使用的数据(如验证码)存储在同一张表中的主要内容,如果未能解决你的问题,请参考以下文章

PHP实现对短信验证码发送次数的限制(防机刷验证码)

HP限制发送验证码条数(防刷验证码)

在线验证码填写 20元/次 周六开工

关于验证码的那些事儿——12306验证码背后的图灵测试算法博弈

验证码不正确是啥原因?

毕业设计——小问题记录