美文网首页工作生活
java如何设计一个安全可靠的手机验证码流程。

java如何设计一个安全可靠的手机验证码流程。

作者: 大继 | 来源:发表于2019-07-04 00:38 被阅读0次

目的

提搞一下大家对安全的意识,顺便梳理一下自己的看法。

目前不可靠的方式

  • 使用验证码,很多同学都以为在发送验证码的时候加个验证码就安全了,其实看过一点相关的AI 算法,就知道验证码破解非常简单。

大难题,手机注册。

  • 如果是我会偏向可以用为主,不做IP 限制,毕竟这种攻击,损人不利己,除非同行。
  • 很难区别,开大型会场和学校这种同一ip多人使用。
  • 小弟不才,没能找到很好的方案,尽量避免这种方式。

我觉得比较靠谱的方式

  • 1,在发起服务限制手机 10分钟内存在 3个未使用验证码禁止继续请求。防止无限制请求漏洞。
  • 2,验证码每日错误超过10次就锁定,防止一直试,总会中奖。
  • 3,年错误不能超过60次,防止暴力破解,每天都来的那种鬼。
  • 4,用户每分钟只能发送一次。
  • 5,使用用户级别错误记录,一天错10次就不再给他发送。(绑定手机的业务)

实现上的细节

以java为例子:

//我们都是这样进行创建,然后补补0
int randomCodeInt = (int)(random.nextGaussian()*1000000);
  • 经过资料查询,Math.random() 以一个方法+System.nanoTime() 纳秒来生成种。
  • 在代码泄露的情况下,发送随机码会有延迟,就算黑客同步时间也无法估算他的值,但是可以缩小范围。
  • 实际使用延迟100+-ms 按限制设计3个限制。 中奖几率在 3% 左右。每天 10次也就上30%
  • 固定种在启动的时间 更加安全,启动延迟更加严重,严重到秒级基本无法接近。

主机安全

顺便说一下主机安全, 主机不要直接暴露,最理想的暴力的主机是硬件及的。 并使用 RAS 登陆,不要用普通的秘密。

结束

欢迎大家补充,毕竟安全无上限。

相关文章

  • java如何设计一个安全可靠的手机验证码流程。

    目的 提搞一下大家对安全的意识,顺便梳理一下自己的看法。 目前不可靠的方式 使用验证码,很多同学都以为在发送验证码...

  • flutter登陆机制

    登录流程 登陆机制的流程其实很简单,简单来说就是: 通过手机号获取验证码 输入验证码,根据手机号和验证码去登陆 登...

  • 【产品流程】积木APP的注册功能

    流程图如下: 异常流程:手机号码输入限制、手机号是否已经注册、验证码是否正确、验证码是否超时。

  • 短信验证模拟登录饿了么

    观察登录流程 无图形验证码的情况 输入手机号 点击发送短信验证码 提交短信验证码 有图形验证码的情况 输入手机号 ...

  • 关于验证码的思考(1.26)

    主流验证码分为三大类,图形验证码、手机验证码、手机语音验证码,它们各自设计初衷如下: 01图形验证码 它有着...

  • 「达目标」&「全历史」登录注册流程还原

    基础流程 达目标三个功能 手机号验证码注册登录流程 手机号密码登录流程 忘记密码手机号重置密码流程 操作问题异常(...

  • 腾讯云短信测试 (云短信、短信验证码)

    App、网站中常有手机验证码等需求,例如手机号注册,手机号登录,密码找回等。 手机注册短信验证码流程大致如下 用户...

  • 生产力工具之云片短信平台-模板管理

    四步搞定短信验证码如何搞定短信验证码签名和模板如何使用云片API发送短信验证码Java实现短信验证码和国际短信群发...

  • PHP 短信验证码

    业务操作流程:输入手机号,发送验证码,收到验证码填写提交验证。常用于短信登录和手机号注册账号。 一、购买短信验证码...

  • 达目标注册登录流程图

    一.目录结构 二.手机号验证码注册登录流程图 三.手机号密码登录流程图 四.忘记密码--手机号重置流程图

网友评论

    本文标题:java如何设计一个安全可靠的手机验证码流程。

    本文链接:https://www.haomeiwen.com/subject/osxkhctx.html