图形验证码安全

目录

图形验证码

图形验证码的作用和原理

图形验证码的分类

图形验证码的验证过程

图形验证码的安全问题

静态图形验证码的破解

利用Python脚本破解静态图形验证码


图形验证码

我们经常在登录app或者网页的时候,都会需要我们输入图形验证码上的内容,以验证登录。有些是纯数字的图形验证码,有些是字母和数字,有些是图案,有些是数学表达式......不同的网站,采用的图形验证码的形式也不一样。那么,图形验证码到底是什么呢?

图形验证码是验证码的一种。验证码(CAPTCHA)是 “Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。

图形验证码的作用和原理

作用:图形验证码的主要作用是强制进行人机交互,以此来抵御机器自动化攻击,可以防止恶意破解密码、刷票、论坛灌水,有效防止黑客对某一个特定注册用户用特定程序暴力破解进行不断的登陆尝试。

原理:图形验证码的问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。

图形验证码的分类

图形验证码是现在大多数网站登录通行的方式。不同的网站,由于其安全级别不一样,网站开发人员掌握的技术不一样,使用的图形验证码的种类也不一样。大体上,图形验证码可以分为以下几类:

  • 传统图形验证码
  • 广告型的图形验证码
  • 滑动验证码
  • 图标选择与行为辅助验证码
  • 点击式的图文验证与行为辅助
  • 智能验证码
  • 语音验证码

传统图形验证码
主要是通过用户输入图片中的字母、数字、汉字等进行验证。
代表:大多数网站采用此种验证形式。
特点:简单易操作,人机交互性较好。但安全系数低,容易被破解。



广告型的图形验证码
有精美图案,识别文本也清晰可认,专注于广告。
代表:Solve Media,宇初验证码
特点:与其说是验证码,倒不如说是广告位。



滑动验证码
按要求将备选碎片滑动到正确的位置,或者滑动图标到末尾
代表:极验验证码
特点:操作简单,体验好。单一纬度,容易被逆向模拟,与移动端页面切换不兼容。


图标选择与行为辅助
给出一组图片,按要求点击其中指定的一张或者多张图片。
代表:点触验证码、Google新型验证码、12306验证码
特点:安全性强,对于图片、图库、技术要求高。



点击式的图文验证与行为辅助
通过文字提醒用户点击图中相同字或者相同图标的位置进行验证。
代表:淘宝新型验证码、点触验证码
特点:操作简单,体验良好,单一图片区域较大,破解难度大。



智能验证码
通过行为特征、设备指纹、数据风控等技术,正常用户免验证,异常用户强制验证
代表:点触智能验证码,支付宝验证码
特点:简单便捷,区分人与机器、人与人、设备与设备

语音验证码
通过机器客服给你打电话,告诉你验证码
代表:滴滴验证码,易到验证码
特点:需要接听客服电话,体验较差,无法破解

图形验证码的验证过程

  • 我们访问一个网站的登录页面
  • 服务器端响应并创建一个新的Session ID,同时生成一个随机图形验证码,服务器端有该Sessino ID对应图形验证码的答案
  • 服务器端将该Session ID和图形验证码发送给客户端
  • 客户端填写登录表单,并且填入该图形验证码的答案
  • 服务器端收到用户提交的登录数据,取出Session ID与图形验证码的答案,并且与服务器端相同Session ID的图形验证码答案做比较,如果相同,再判断提交表单的用户名,密码等其他信息。如果图形验证码错误,随即返回验证码错误

注意:这里需要注意的是,Session ID销毁的条件是用户提交的图形验证码和用户名密码等其他信息正确,即登录成功,或者是用户手动刷新验证码

图形验证码的安全问题

既然图形验证是用来抵御机器自动化攻击,防止恶意破解密码、刷票、论坛灌水,防止黑客攻击等威胁的一种手段。道高一尺魔高一丈,那么恶意用户肯定会想方设法去绕过或破解图形验证码,来达到其恶意的目的。图形验证码面临的安全问题来自多方面的,既有客户端的问题,也有服务器端的问题,也有验证码本身的技术问题。

客户端的安全问题

  1. 客户端生成验证码,验证码由客户端生成并且仅仅在客户端用验证
  2. 验证码输出在响应包中
  3. 验证码输出在cookie中

服务端的安全问题

  1. 验证码不过期,没有及时销毁Session ID会话导致验证码重复使用
  2. 没有进行非空判断
  3. 产生的验证码内容集内的答案非常有限,导致可以被制作成字典

验证码技术安全问题

比如现在很多类型的图形验证码已经可以通过技术手段识别绕过了,识别图形验证码是计算机科学里的一项重要课题,涉及到计算机图形学,机器学习,机器视觉,人工智能等高深领域。

静态图形验证码的破解

图片灰度化和图片二值化

传送门——> https://blog.csdn.net/qq_36119192/article/details/86012022

文字分隔

为了能识别出字符,需要对要识别的文字图图片进行分割,把每个字符作为单独的一个图片看待

标准化

对于部分特殊的验证码,需要对分割后的图片进行标准化处理,也就是说尽量把每个相同的字符都变成一样的格式,减少随机的程度,最简单的比如旋转还原,复杂点的比如扭曲还原等等

识别

这一步可以用很多种方法,最简单的就是模板对比,对每个出现过的字符进行处理后把点阵变成字符串,标明是什么字符后,通过字符串对比来判断相似度

最好的识别算法,就是神经网络,神经网络是一种模拟动物神经元工作模式的算法,神经网络有多种不同的结构,但是基本架构分为输入层隐含层输出层,输入和输出均为二进制。

利用Python脚本破解静态图形验证码

Python中有很多封装好的神经网络库,把特征值输入神经网络,再输入是对应的什么字符,也就是训练的过程,随着训练的进行,神经网络的内部结构会改变,逐渐向正确的答案靠拢。神经网络的优势是,对于扭曲的字符识别成功率非常高。另外神经网络在信息安全中还可以起到很多其他作用,比如识别恶意代码等等

未完待续。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/253877.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

图形验证码

一、图形验证码是什么? 图形验证码是一些没有规则的图文的组合,参考下图 二、图形验证码有什么用? 防止恶意攻击者采用恶意工具批量注册账号或是大量频繁调用某些请求,给服务器造成压力,占用大量的系统资源。 三、图形…

C语言——数据在内存中的存储(上)

数据在内存中的存储 1. 数据类型的介绍 之前已经介绍过C语言中的基本数据类型了,主要有: char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数 注意:C语言中是是没…

php图形 验证码代码,PHP制作图形验证码代码分享,php图形验证码代码_PHP教程

PHP制作图形验证码代码分享,php图形验证码代码 效果: myvcode.class.php:封装创建验证码的类 /* * file:myvcode.class.php * 验证码类,类名Vcode */ class Vcode {private $width; /*验证码宽度*/ private $height; /*验证码高度*/ private $codeNum; /*验证码字符个数*/ p…

Android图形验证码

1. 前言 图形验证码可以让服务器以图片的形式传给客户端,也可以让客户端自己实现。那客户端要怎么做呢?其实很简单,可以使用Android的Canvas、Paint和Random来实现。用Random来随机生成数字、字母、颜色、画笔原点等等,设置Paint…

java生成图形验证码

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666) 首先,需要生成验证码字符串,方式很多,下面提供一种,根据指定源的方式来生成验证码 /*** 使用系统默认字符源生成验…

图形验证码最佳攻略2

下面是注册 如果是手机用户注册,需要发送短信验证码 说明: 发送图形验证码是为了拦截发送短信的.但是不拦截"注册帐号" 但是,用户体验很别扭,因为图形验证码很显然是错误的,但是却可以注册成功. 如果点击注册帐号 ,也要校验图形验证码,那就让用户输入两次图形验证码,…

小程序图形验证码输入校验例子

前言 本教程是基于 “apifm-wxapi” 模块,教你快速实现小程序开发,所以你可能需要先了解以下知识点: 《创建 HelloWorld 项目》《使用 “apifm-wxapi” 快速开发小程序》《免费注册开通后台,获得专属域名》 功能说明 图形验证码的…

Part1:使用 TensorFlow 和 Keras 的 NeRF计算机图形学和深度学习——计算机图形学世界中相机的工作原理

Part1:使用 TensorFlow 和 Keras 的 NeRF计算机图形学和深度学习 1. 效果图2. 原理2.0 前向成像模型2.1 世界坐标系2.2 相机坐标系2.3 坐标变换2.4 投影转换2.5 数据 3. 源码参考 是否有一种方法可以仅从一个场景多张不同视角的照片中捕获整个3D场景? 有…

IDEA+Mysql+Sqlserver安装步骤_kaic

下载Intellij 开发工具,如果有请检查软件是否过期,如果过期卸载电脑上的Intellij软件。卸载步骤: 打开控制面板,选择卸载程序找到Intellij右键卸载 如果没有请保存文档中的Intellij.zip压缩包,进行安装,安装步骤 双…

电脑重置网络

1、键盘WinR键,弹出窗口 2、然后在里面输入cmd输入CMD 3、出现的命令提示框内输入“netsh winsock reset"按”Enter“键 4、重启电脑后生效。

重置电脑

步骤1: 以Win10系统为例 直接在搜索框输入:reset 或者直接选择「设置」-「更新和安全」-「恢复」 步骤2: 步骤3: 根据个人情况选择【保留我的文件】或者【删除所有内容】

如何让Win10 重置此电脑功能无法使用

环境: Win10 专业版 问题描述: 通过设置-更新和安全-恢复-重置此电脑,如何让Win10 重置此电脑功能无法使用 解决方案: 1.PE下删除Win Re 恢复分区,然后重置就无法使用

重置计算机后无法开机,win10重置此电脑失败怎么办_win10重置此电脑失败无法开机修复方法...

当win10系统使用时间长了,难免会有一些电脑故障的出现,这时有些用户就会选择使用重置电脑的方式来解决,但是最近有用户再给自己的win10系统进行重置时总是出现失败的情况,那么win10重置此电脑失败怎么办呢?下面就来告诉…

win10怎么重置计算机,如何重置Win10系统电脑

当系统出现一些难以解决的问题时,我们一般会选择重置电脑来解决问题,比起重装电脑来说简单很多,但是也要注意有可能会失败。下面小编就以win10为例,给大家讲讲怎么重置电脑的操作步骤吧。 操作步骤: 1、打开屏幕侧方的…

DELL 笔记本 - Windows 10 恢复 / 重置此电脑

DELL 笔记本 - Windows 10 恢复 / 重置此电脑 1. Windows 设置 2. 更新和安全 3. 恢复 4. 删除所有内容 5. 所有驱动器 6. 仅删除我的文件 7. 重置 References https://yongqiang.blog.csdn.net/

win10系统如何重置电脑

在win10系统出现系统问题无法修复的时候,我们可以尝试使用win10系统自带的重置功能,相比重装系统在操作上可能要简单不少,不过同样也有失败的风险。下面就让小编带领大家进行一下win10系统重置电脑的操作吧。 win10系统如何重置电脑 1、打…

win10怎样重置电脑

win10怎样重置电脑 windows10提供重置电脑的功能,如果系统遇到问题,运行不正常,或者想刷新系统,可以考虑重置电脑,使电脑有一个全新的干净的系统。下面介绍重置的方法 点击开始菜单,然后选择“设置” 在设…

【教程】Win10重置电脑和重装系统

如果电脑系统出现蓝屏或者卡顿的故障,很多用户会想要通过重装系统来解决。 其实在Windows10系统中会有“重置此电脑”的功能,类似于恢复出厂设置的意思。很多时候只需要重置电脑就足够解决用户的需求了,duck不必繁琐的制作启动U盘来重装系统…

计算机系统如何重置,如何重置电脑系统?看这里1分钟教会你!

原标题:如何重置电脑系统?看这里1分钟教会你! 哈喽,大家好我是小黑~最近后台有小伙伴留言咨询#如何重置Windows 10系统?#。 重置系统是Windows系统自带的功能,此功能会将错误的系统文件替换,从而…

Win10笔记本电脑怎么直接重置初始化

很多朋友都知道电子设备一般都会有初始化的功能,自己使用的电脑毛病越来越多,不知道能不能重置初始化,今天我给朋友们讲讲Win10笔记本电脑怎么直接重置初始化让电脑系统焕然一新,大家可以按下面的步骤操作。 Win10笔记本电脑怎么直…