欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

如何限制验证码只可使用一次

程序员文章站 2022-06-04 12:36:19
...
假设有个活动,已实现的是:每个账号只能参与一次。
在有验证码的情况下,如果某人通过获取一次验证码后,通过提交相同的验证码,切换不同账号进行参与活动。
这种做法是不是可以实现的,如果是,如何避免呢!验证码和账号通过一些加密绑定,提交的时候验证?


回复讨论(解决方案)

验证码 是动态产生,实时校验的
不存在你说的现象

不同账号进行参与活动,当然是允许的

验证码 只不过是给用户带来一点麻烦而已

我比较好奇,换帐号也不能参加那你们是怎么判断参加资格的?

换帐号session就不同了,因为退出时是销毁原来session的
session不同,验证码自然就不同了




嗯,我可能表达不好,我的意思是这样的。不同账号是可以参加的,A使用账号A,通过接口获取验证码后,保存在SESSION里,这个时候,A通过验证成功后,A继续切换账号B,这个时候不获取验证码的话,直接提交原来的验证码也可以验证通过?(假设是恶意用户写的程序)

应该在验证成功后,马上销毁SESSION,就可以防止了?

你还是一根筋,请问A帐号如何换B帐号呢?要么退出、要么关闭浏览器、要么换浏览器
一个session只对应一个帐号的一次登陆,是退出的时候销毁session??这个事不会说之前没做吧?

客户端只能得到cookie,是不能改session里面的值,不要把session里面的东西存进cookie就行了

你的验证码是固定不变的?

你还是一根筋,请问A帐号如何换B帐号呢?要么退出、要么关闭浏览器、要么换浏览器
一个session只对应一个帐号的一次登陆,是退出的时候销毁session??这个事不会说之前没做吧?

客户端只能得到cookie,是不能改session里面的值,不要把session里面的东西存进cookie就行了

我的登录不是SESSION的,只采用了COOKIES!
那假设我用的是SESSION,我的验证码存的SESSION和用户登录保存的SESSION有关的?

很晕……无言

可以这么做呢,在数据库中加一个验证码的字段设唯一属性,只要A登录就把验证码存入A账户的验证码的,这样不是就可以绑定了

不知道你的具体实现,建议session或cookies在用户输入验证码之后,即刻销毁当前值即可。
可把验证码搞的长一些,比如5-6位,以减少机制上带来的重复。
希望对你有帮助!!!

这样吧,提供一个思路。

将已经使用过的验证码写入数据表,然后每次用户提交验证码的时候,会进行查询一次数据库,有一个字段是区别验证码是否已经使用。这样就可以防止验证码重复,类似于邀请码。