java web 验证码生成后一般在啥地方保存这个验证码?存到数据库还是怎么地?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java web 验证码生成后一般在啥地方保存这个验证码?存到数据库还是怎么地?相关的知识,希望对你有一定的参考价值。

一般生成完验证码发给用户,服务器端怎么保存验证码,二,验证码的时效性和可用性,加密,有什么思路,谢谢大神指教

说起验证码,关系它的是安全性,再联系到你的时效性,这就非session(本身是客户端的唯一使用服务器资源的凭证,而且是有时效限制的,用户长期未访问服务器,这个session是就会被主动注销掉)不能当此大任了,可用性不在话下,至于你说的加密这是画蛇添足了。

依楼上所言,未免误人,服务器端是必须保存这个验证码的,就像我给你了一个验证码,你可以使用,我自己也得备份一下和你比对,不然那不就变成了:你说你的验证码是对的,你已经验证过了,我就信任你了,那就等于没有密码,客户端的一切安全认证都是不足为信的!
参考技术A 一般生成验证码都存放在前端而不是存放在服务器,因为验证码的作用是阻止用户不停的提交数据到server。
验证时用前台代码验证,时效也是前台设置,具体看你前台用的什么方式,flex, javascript等等,因为是前台校验,不用考虑加密问题。追问

那如果付费验证码呢?也放在前台吗

追答

验证码肯定是放在前台验证的,只有验证通过才会提交到server,这样可以避免暴力破解等各种问题。付费的也应该一样。
不想与楼下辩论,安全性又岂止验证码一种方式,再说就算你站点想尽办法做到最后,还是有可能会被攻下,无须讨论无关的内容。

======================
补充一下吧,令牌方式的,确实有前台+后台双重验证的,不过那种是后台生成的令牌,放到前台来,最后一起又提交到后台去,如果令牌正确,则处理,不正确忽略请求,如struts的token,这个一般也不用来做验证码,是用来防止重复提交的。

如果有疑问请追问

web服务端给手机客户端发送一条短信验证码,因为要跟客户端提交的比较,服务端怎么先保存这个验证码呢

可以的,你可以使用数据库保存,比如mysql,就是你在调用发短信的时候,把生成的验证码和对应的手机号码保存到数据库,在验证的时候,把输入的手机号码,验证码和数据库匹配就行了。另外进阶的用法就是使用memcache/redis/session保存 参考技术A web服务端生成随机验证码,然后放入缓存(session/redis/memcache等),然后执行发送操作发送到手机短信中,用户看到手机上的验证码以后,在web界面的文本框中输入收到的验证码,点击提交验证的时候,你request一下用户在文本中提交的值,和你刚才放在缓存里的验证码进行一下对比,如果比较结果是相等则用户输入正确,如果对比结果不相等则用户输入错误!追问

可以存到数据库吗,因为需求是用手机号注册

追答

验证码属于一次信息不需要保存在数据库,如果非要保存一下的话,可以在用户输入的验证码验证通过以后再保存,

以上是关于java web 验证码生成后一般在啥地方保存这个验证码?存到数据库还是怎么地?的主要内容,如果未能解决你的问题,请参考以下文章

web前端怎么开发短信验证功能

动态生成验证码案例(Java)

java验证码-汉字验证码

web服务端给手机客户端发送一条短信验证码,因为要跟客户端提交的比较,服务端怎么先保存这个验证码呢

验证码,已在啥事接受了

Web验证码图片的生成-基于Java的实现