首先咱们需要知道验证码,是什么?作用什么?一般都有那些验证码?

验证码:是一种校验区分用户是计算机还是人的公共全自动程序。

作用:防止刷票、论坛灌水、刷页、防止黑客恶意破解密码、盗取用户数据和防止恶意注册登录等等

验证码类型:

1、纯数字验证码

2、字母+数字

复杂点

3、滑动验证码

4、识物

5、输入指定汉子验证码

综上举例顺序,大家也可以看到每一种验证码的难度复杂度是逐步提升的。

接下来看一看破解几种方式及防御手段:

1、暴力破解绕过验证码

纯数字验证码:接入接码平台或者使用验证码识别工具,对变化的验证码进行识别,然后使用暴力破解。

防御手段:

1.接入复杂的验证码,如滑动验证码或者汉字识别验证码、接入语音验证码,如极验、网易易盾

2.验证次数限制:短时间内限制验证次数以及加上一天验证的总次数

3.验证码只能验证一次:验证码验证一次之后立马失效,不能重复验证

短信验证码:业务系统在接入短信验证码进行验证时,一般使用的是4位或者6位,如果服务端未对验证时间、次数进行限制,则可以使用爆破的方式进行认证,得到正确的验证码

爆破方式:使用burp或者编写脚本从1111-9999或者111111-999999进行遍历

防御手段:

由于也是纯数字,所以这一块2、3和纯数字的方法一样,主要看看第一个,就是尽量使用六位验证码而不是四位,因为相对之下爆破难度会有所提升

2、短信轰炸

概念:是攻击者通过向服务器不断发送请求,请求向某个手机号码或某些手机号码发送垃圾短信,导致服务器向单个手机号码或多个手机号码短时间内发送大量短信的攻击行为。

危害:

1.手机方面,会影响手机接收端的正常功能,如:正常短信被覆盖,用户无法查看;短信轰炸频率过高可能导致手机宕机

2.服务器方面,会消耗服务器大量短信资源,对企业造成经济损失。

防御手段:

1.为了防止攻击者对单个手机号码发起攻击,可以限制向一个手机号码一分钟只能发送1次短信,一天只能发送10次短信。

2.限制同一个session ID的请求包,在一分钟之内只接受一次请求或者限制一天之内发送次数不超过50次。

3.请求页面加入图形验证码,并且限制手机验证码发送的时间间隔。

4.服务端添加短信资源消耗异常告警服务。

3、验证码重复使用

概念:在网站的登录或其他验证页面,如果验证码(图形验证码或短信验证码)认证成功后,服务器没有及时将该验证码的验证状态更新,则会导致一个验证码多次验证。

危害:如果涉及到密码相关的业务,如修改密码,验证码可以多次验证,验证码泄露之后,攻击者可以重复利用该验证码进行密码修改。

防御手段:针对验证码验证次数问题,验证码在一次验证之后,服务端立即更新该验证码的状态,使得该验证码失效,不能重复被验证。

4、客户端回显

概念:在网站的登录或其他验证页面,服务器生成短信验证码或者邮箱验证码,当发送到邮箱或者手机时,会将短信验证码或者邮箱验证码以数据包的形式返回到前端。

危害:攻击者只需要知道受害人的电话号码,利用该接口发送短信即可得到短信验证码,然后利用该接口可以修改密码,盗取用户的账号。

防御手段:

1.禁止验证码在本地客户端生成,采用服务器端验证码生成机制,不给前端返回这个验证码,只发到用户的邮箱或手机。

2.设置验证码的时效性,如60秒过期

3.验证码应随机生成,且使用一次即失效

安全开发之验证码安全相关推荐

  1. 手机验证码平台,怎么发送手机验证码,php开发手机验证码短信接口功能

    通过前面的学习, 你已经掌握怎么在腾讯短信平台上设置项目, 添加短信签名, 设置短信模板, 把手机验证码注册页面写好. 今天子恒老师来跟你分享怎么实现发送手机验证码给用户, 注意我们使用的是php开发 ...

  2. 验证码登录开发----手机验证码登录

    手机验证码登录 需求分析 为了方便用户登录,移动端通常都会提供通过手机验证码登录的功能 手机验证码登录的优点: 方便快捷.无需注册,直接登录 使用短信验证码作为登录凭证,无需记忆密码 安全 登录流程: ...

  3. 项目开发过程中如何使用免费开发手机验证码验证功能(详细教程)

    一群热爱技术并且向往优秀的程序猿同学,不喜欢水文,不喜欢贩卖焦虑,只喜欢谈技术,分享的都是技术干货.Talk is cheap. Show me the code 首先声明一下,这个Demo仅限用于开 ...

  4. 直播平台开发,验证码工具类

    直播平台开发,合理使用验证码工具类 package com.ywfcake.demo.util;import lombok.extern.slf4j.Slf4j;import java.awt.*; ...

  5. PHPCMS v9 二次开发_验证码结合Session开发

    本文主要讲解了在V9中使用v9自带验证码并且需要使用session的情况下,多种问题的解决.:).如有问题或者更好的解决办法,希望不吝赐教. 1.前端调用验证码 pc_base::load_sys_c ...

  6. java解决撞库的问题_Web安全开发之验证码设计不当引发的撞库问题

    感谢某电商平台安全工程师feiyu跟我一起讨论这个漏洞的修复.以往在安全测试的过程中后台经常存在验证码不失效果造成的撞库问题,甚至在一些银行或者电商的登录与查存页面同样存在这个问题,一旦造成撞库无论对 ...

  7. Android开发免费短信验证码SDK。

    本人也是刚入安卓,今天学到了短信验证这一块.在平时我们接触的很多APP注册(登录)都需要短信验证,所以突然就想到写一篇博客,一来是巩固知识,方便自己查阅.二来是和大家伙们一起分享下,给需要的朋友一点自 ...

  8. 前后端开发bug:python+vue开发图片验证码接口时,刷新浏览器不显示图片验证码,点击以后才可以显示和切换

    现象: 刷新浏览器页面,图片验证码不显示,点击图片验证码区域以后,才能显示也可以切换显示下一个. 排查思路: 调用开发者工具,检查是否向后端发起获取图片验证码请求. 如果生成了图片uuid编号,发送了 ...

  9. 小程序开发——手机号验证码登录页面

    最终做出页面效果: login.wxml <view class="main_candidate"><view class="inputbox flex ...

最新文章

  1. 阿里云网盘内测_阿里云网盘内测,下载10M/s;百度网盘...?
  2. 数据挖掘(Data Mining)| 数据分析建模理论基础
  3. [杂笔]我的第一篇博客
  4. kubernetes1.30集群部署+dashboard+heapster
  5. 【Warning】Unity2021.1将不兼容之前版本ECS
  6. [微积分] 常用定义与公式
  7. Linux读写I2C设备I2C_RDWR用法
  8. 我对Asp.net页面一系列执行过程的认识
  9. Thinkphp报错:fields not exists:[status]
  10. EOS合约开发 - 钱包篇
  11. Springboot在线电影订票系统
  12. 《尚学堂科技_马士兵_JAVA_系列视频教程_BBS_2007》学习
  13. ubuntu大小写切换键的使用
  14. php中的oop思想,php oop的特性是什么?php oop思想的三大特点介绍
  15. 2019 ICPC 徐州 H题 Yuuki and a problem
  16. 图数据库ONgDB Release v-1.0.0
  17. HTML字符实体,转义字符串
  18. phpStrom连接MySQL数据库
  19. APP自动化遇到问题总结-持续更新
  20. 学习记录【1】--chrome的控制台打开很慢

热门文章

  1. s - 指数运算-快速幂实现
  2. 基于 Python 的 Stacking 集成机器学习实践
  3. Windows 最小巧最好用的nat 服务器软件(共享上网软件)
  4. 【软件测试】软件本地化测试
  5. 安卓逆向(x车app,登录token)
  6. Nginx(proxy_pass代理转发详解)
  7. 【035】基于java的进销库存管理系统(Vue+Springboot+Mysql)前后端分离项目,附万字课设论文
  8. float类型的存储方式
  9. PBI Report Builder 系列:序篇
  10. java使用poi操作excel(读、写)