修真院PM小课堂 验证码?

修真院PM小课堂 验证码?
1.定义
验证码是一种区分用户是计算机还是人的公共全自动程序,由美国卡内基梅隆大学的四位教授在2002年提出。
该程序是指向请求的发起方提出问题,能正确回答的即是人类,反之则为机器。
程序基于这样一个重要假设:提出的问题要容易被人类解答,并且让机器无法解答。
简单而言,验证码就是为了验证某个操作是人为还是机器行为。
用户只有正确键入验证码,才可以继续用户行为

2.作用
验证码能够有效的防止破解密码、刷票、灌水等恶意行为,具有较好的实现成本、安全性和可用性优点。
一般多应用于注册、登录、忘记密码、留言、回复、绑定、支付等使用场景,多是在用户多次(一般是三次以上)注册、登录失败时激活使用。
验证码的常见形式及主要特点
1.图片验证码
通常由4-6位数字和字母混合组成,也会出现由纯粹数字或字母组成的情况,多以图片验证码形式显示。
用户点击即可刷新当前验证码,刷新无时间间隔。为了提高辨别难度,一般都会在背景里加入干扰线。
这种形式的验证码是最常见的,也是实现最为容易的。
不过尽量不要使用难以辨别的字符,如““1、L、I、0、O、Q、g、9、2、Z”等。
优点:实现成本低。
缺点:操作较繁琐(需要在鼠标键盘和输入法之间切换使用),无趣味性。

2图片辨别型验证码,这种形式的验证码操作简单,只需要点击鼠标即可完成。
缺点就是如果图片太过相似,会大大增加用户的输入成本,甚至引起用户的反感。

2.文字验证码
文字验证码纯粹由文字组成,多是将6个文字打乱顺序,随机放置在图片背景上,用户按顺序点击找出隐藏在其中的成语即可验证成功
这种形式的验证码方式较新颖,但是会出现生僻成语阻碍使用。
例子 手机QQ和手机百度。
优点:实现成本低、操作简单、趣味性不错。
缺点:有一定使用门槛。

3.滑块验证码
通常需要用户按住滑块并拖动到特定的位置补充完成某张拼图,会随着类似进度条的指示器指导用户操作。同时也有直接让用户按住滑块拖动至进度条底部末端的验证方式,相应的只是减去了拼图形式。
这类形式的验证码不仅很新颖,还具有不错的趣味性,有利于提升用户体验。
优点:操作简单、趣味性强。
缺点:实现成本较高。

三、验证码通常应该如何设置
1.使用原则:非必要的时候尽量不使用验证码。
例如:3次输入错误的时候,才允许激活使用验证码。
2.记忆原则 在允许的条件下,验证码不要过长
通常都是4-6位的验证码,这样有利于用户形成短暂的快速记忆,方便用户操作使用。
3.保存原则 用户验证码输入错误时,尽量将用户输入损失降到最低,更多的保存用户已经填过的信息,不让用户反复填写表单,简化操作。
尽可能地降低验证码刷新获取机制,方便用户重新获取。
4.发送原则 在保证验证码15min的有效期的前提下,可以重复发送同一条验证码,
同时这也不容易让用户产生骚扰的感觉;
验证码过期无效时,应该刷新发送新的验证码,以此保证验证码的安全性。

4.短信验证码和语音验证码
由于手机的普及广度和实名制政策的推行,所以APP和网站采用手机号码方式注册账号,
一方面既有利于验证手机号码的真实性,防止恶意注册登录;
一方面也有利于建立平台自己的用户体系。
这种形式的短信验证码以6到4位数字组成为主,但由于实现成本较高,重新刷新获取的时间间隔多为15-60S。
部分平台会在提供短信验证码之余,同时设置语音验证码,通常作为用户可能由于特殊原因无法正常接收短信验证码的补救措施,
案例 知乎和 部分金融APP。
优点:操作简单、真实性强、安全性高。适用性广,
除了防止恶意注册登录外,同时完成了对手机号码真实性的校验,
缺点:实现成本较高,重新刷新获取的时间间隔较长。
需要一个专门的短信发送平台,并向电信运营商支付短信费用,

一、语音验证码和短信验证码的区别
(一)区别
1.验证码接受方式不同:短信验证码以短信方式发送到用户手机上,
而语音验证码是以电话的形式语音接听的 。
2.传播形式不同:一般情况短信验证码是大众所常用的一种验证方式,但短信当信号不好的时候,当所在地域为屏蔽地区的时候,短信验证码收不到时,
电话语音验证可以保证整个流程顺利进行下去。  
3.安全性方面不同:短信验证的方式会受手机木马、信息泄露等的影响,使得验证失败,财产丢失。手机验证码短信要求核实方必须是个真实的用户
语音验证码的出现防止刷单且更加安全。  
4.应用方式不同:语音验证码是以用户接听电话的形式,容易被客户不小心挂断。
短信验证码方便快捷,更容易被人们接受。

(二)分析比较
1.体验方面:
(1)短信验证:体验上来看,短信有个短信到达率的问题,很多短信会丢失,特别是这类校验、通知短信。
任何一家短信服务商都无法做到100%的到达率,另外还有类似西藏之类的短信管制的因素等等,所以短信验证通常会使得大概5%到10%的用户无法通过验证。
(2)语音验证:虽然电话验证的体验和便捷度都无法和短信相比,但在无法接收短信的情况下,电话验证可以保证整个流程顺利进行下去。
3.4、用户体验方面,短信验证码有限期限更长,只要你不删除信息会一直保留在手机里,而验证码本身的有限期限为60秒到10分钟不等。
语音验证码是即时性的,如果用户不小心挂断了电话就收不到语音验证码,有时候用户不方便接听电话时语言验证码就不太合适
3.5、整体来说,其实语音验证码+短信验证码的二合一更为高效率,两者互补比较好,如果我们消费者点击短信验证码之后收不到,那么就可以直接点击语音验证码,
可以确保客户不会流失。
4.验证码为什么都会选择是4位或6位?
手机验证码一般都是数字,都是有一定几率被用户猜中的,4位的话,有1/10000=0.01%的概率,6位的话,有1/1000000=0.0001%的概率。而用户一次记住4位数字是容易的,6位就没那么容易了,所以设计手机验证系统的时候,就可以有如下选择了: 为了细致的用户体验,对0.01%的破解概率不是太在乎的话,就用4位的; 为了更安全,使猜中概率接近于0.0001%(近乎于不可能事件了吧),使用6位的;
3.4、用户体验方面,短信验证码有限期限更长,只要你不删除信息会一直保留在手机里,而验证码本身的有限期限为10分钟到30分钟不等。而语音验证码是即时性的,如果用户不小心挂断了电话就收不到语音验证码,有时候用户不方便接听电话时语言验证码就不太合适 3.5、整体来说,其实语音验证码+短信验证码的二合一更为高效率,两者互补比较好,如果我们消费者点击短信验证码之后收不到,那么就可以直接点击语音验证码,对于网站来说,可以确保客户不会流失。

2.风控安全方面:
(1)手机木马:智能机的流行使得原来相对安全的短信验证变得脆弱如纸。中了木马后,短信就会在不知情的情况下被转发走,导致各类验证失效,财产受损。
(2)短信仓库/短信转移/信息泄露:前两者都是运营商的业务,可以在网站上看到短信内容,或者转发到指定的手机中。
(3)作弊风险:现在很多公司都会有大量的运营活动来支持自己的业务,比如促销满减,新客1元,免费体验,秒杀,限购等等,这中间就意味着需要很多账户。而账户一般都会要求做手机短信验证来核实是个真实的用户,于是就产生了专门做手机验证码服务的卡商和刷单的赚客,从而危害到了公司正常业务的发展。

二、验证码为什么都会选择是4位或6位
目前大多数的短信验证码都是采用的6位验证码,其主要原因在于:6位短信验证码更为安全。

从破解的概率来看,4位的话,有1/10000=0.01%的概率,6位的话,有1/1000000=0.0001%的概率。对于平台会员来说,尽管采用6位验证码更难记些,但是对于账户的安全度还是高些的。当然,理论上来说,验证码越长,安全系数会呈放大效应,即安全度越高,但考虑到用户输入体验,以及6位数字的破解时间,一般6位的破解预计会超过验证码超时时间,所以现在大多数网站都是采用6位的验证码。

三、重复发送验证码的话,是否应该发送同一个验证码?
不应该重复发送同一个验证码,一般发送新的验证码后,上一条验证码即使在有效期内也直接失效。如果发送同一条验证码,安全风险就会很高
简书-语音验证码和短信验证码的区别
不应该重复发送同一个验证码,一般发送新的验证码后,上一条验证码即使在有效期内也直接失效。如果发送同一条验证码,安全风险就会很高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值