zoukankan      html  css  js  c++  java
  • 短信验证码的安全策略

    为什么要有验证码?

      一开始构想捐款系统的时候,是站在用户的角度上来看的,首先自己人用,要方便、快捷,随时登录,一键捐款;但是牵扯到资金交易,安全是个很大的问题。

      现在快捷支付非常便捷,开发者总是要考虑到用户的财产安全,这既是为用户着想,也是为自己规避责任风险。支付的时候使用验证码在一定程度上加强了微信支付的安全性。

      支付的过程中,需要接收手机验证码。众所周知:1条短信验证码0.1元,看起来微不足道。假设:你一天支付了10次,那么就是1元钱;如果有一个程序通过某个平台,不停的向其他手机发送验证码,那该平台的短信支付接口也将面临欠费停机的风险。

    如何有效的避免短信验证码被刷呢?

    1. 从系统前台进行限制

      由于点击“获取验证码”就能直接获取验证码不安全,特在此处添加了一个小插件。这样用户在每次获取验证码的时候,就必须点击按钮进行验证,之后才能正常接收验证码。从而避免了某个自动执行的函数通过向手机发送验证码,导致手机被扣费的情况。
    插件验证

    2. 从后台数据库进行限制

      后来发现,依然还有短信被刷的情况。综合考虑,觉得只从前台限制还是不够,必须从根本上控制数量。于是,我在每次发送验证码的时候,获取了当前的时间戳函数,通过这个时间戳可以得到当天的日期,与该手机号一并存入数据库中,形成日志。

      这样,下次再发送验证码的时候,先筛选一下数据库,看看请求发送验证码的手机号今天发送过多少次了。超过我们规定的数量,就不允许该用户当天在发送验证码了。不管坏人在用什么样的办法,依旧还是躲不过我们后台的“检验”呢!

      也不知道这样的方法到底是不是够安全,如果你有更好的办法,希望可以讨教一下~

  • 相关阅读:
    64位平台支持大于2 GB大小的数组
    NET Framework 4.5新特性 数据库的连接加密保护。
    永无止境之网站的伸缩性架构
    ASP.NET MVC IOC 之Ninject攻略
    C# 中几个小“陷阱”
    AngularJS的依赖注入方式
    JVM内存配置详解(转)
    StringBuilder、StringBuffer和String三者的联系和区别(转)
    Java线程的生命周期(转)
    Java程序员须知的七个日志管理工具(转)
  • 原文地址:https://www.cnblogs.com/sweetheartly/p/9439869.html
Copyright © 2011-2022 走看看