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

    为什么要有验证码?

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

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

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

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

    1. 从系统前台进行限制

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

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

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

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

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

  • 相关阅读:
    java短信验证和注册
    java两个对象属性比较
    mysql像通讯录一样把中文按字母排序的sql
    开发APP必须知道的API集合,来源http://www.cnblogs.com/wikiki/p/7232388.html
    第三方短信接口使用测试
    Guava google缓存机制
    Integer 使用==判断127和超过128的数据的区别
    js加密后台加密解密以及验证码
    sqlserver system object type
    为RadComboBox添加SelectionChanging事件
  • 原文地址:https://www.cnblogs.com/sweetheartly/p/9439869.html
Copyright © 2011-2022 走看看