网盾科技IT教育,只培训技术精英
全国免费咨询电话: 15827351614
为什么web端登录需要验证码?

很多朋友们对于登录必然遇到的验证码这个事情很不理解,增加用户操作的冗余性,直接登录很方便,为什么web端登录要添加个验证码?其实验证码的本质属性安全性,除了防止恶意破解密码、刷票、羊毛党、论坛灌水、爬虫等行为外,还是用户与网站信息安全的有力保障。

为什么web端登录需要验证码?

下面是我们安服技术人员给的从安全角度看,为什么Web登录需要验证码?

因为你的WEB站有时会碰到客户机恶意攻击。其中一种很常见的攻击手段就是身份欺骗,它通过在客户端脚本写入一些代码,然后利用其客户机在网站、论坛反复登陆,或者攻击者创建一个HTML窗体,其窗体如果包含了你注册窗体或发帖窗体等相同的字段,然后利用"http-post"传输数据到服务器,服务器会执行相应的创建帐户,提交垃圾数据等操作。如果服务器本身不能有效验证并拒绝此非法操作,它会很严重耗费其系统资源,降低网站性能甚至使程序崩溃。

下面引用3个常见的HTML攻击举例说明:

1、HTML语法暴露的账户安全问题

标准的HTML语法中,支持在form表单中使用<input></input>标签来创建一个HTTP提交的属性,现代的WEB登录中,常见的是下面这样的表单:

00000000<form action = "http://localhost:8080/Application/login" method = "POST"> 用户名:<input id="username" name="username" type="text" /> 密码:<input id="password" name="password" type="password" /> <button type="submit">登陆</button></form>

form表单会在提交请求时,会获取form中input标签存在name的属性,作为HTTP请求的body中的参数传递给后台,进行登录校验。

为什么web端登录需要验证码?

例如账号是user1,密码是123456,那么在提交登录的时候会给后台发送的HTTP请求如下(Chrome或者FireFox开发者工具捕获,需开启Preserve log):

为什么web端登录需要验证码?

可以发现即便password字段是黑点,但是本机仍以明文的形式截获请求。

2、HTTP协议传输直接暴露用户密码字段

在网络传输过程中,被嗅探到的话会直接危及用户信息安全,以Fiddler或Wireshark为例,发现捕获的HTTP报文中包含敏感信息:

为什么web端登录需要验证码?

而现在流行的判断访问WEB程序是合法用户还是恶意操作的方式,就是采用一种叫“字符校验”的技术,WEB网站像现在的动网论坛,他采用达到方法是为客户提供一个包含随即字符串的图片,用户必须读取这些字符串,然后随登陆窗体或者发帖窗体等用户创建的窗体一起提交。

那么该怎么办?有什么防护的办法呢?这时候我们的安全研究人员就发明了验证码。具体发明史记介绍详见我前几篇文章的介绍。因为人的话,可以很容易读出图片中的数字,但如果是一段客户端攻击代码,通过一般手段是很难识别验证码的这样可以确保当前访问是来自一个人而非机器和AI机器人。

验证码:就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。

典型应用场景:

  • 网站安全:垃圾注册、恶意登录、恶意攻击

  • 数据安全:数据爬取、数据破坏、账号盗用

  • 运营安全:恶意刷单、虚假秒杀、虚假评论、占座、刷票

  • 交易安全:虚假交易、恶意套现、盗卡支付

意义:现在网站为了防止用户利用机器人自动注册、登录、灌水、刷票、薅羊毛等,都采用了验证码技术。

比如说某粮食手机抢购,如果没有验证码直接可以抢到购买,那会有无数黄牛的软件会在里面刷,然后抢走大部分的粮食拿出来加价卖,如果加一个随机的验证码(前提是软件识别不出里面的内容)。那就可以大大减少这种情况。

当下,随着科技的发展,验证码在交互形式上也得到了很大的提升,越来越注重用户体验,许多企业推出了智能无感验证,拥有无需验证即可判别使用者身份的验证体系,其原理其实也非常简单。风控引擎在用户尝试登陆或者做其他传统需要验证的操作行为前,就会对操作环境进行扫描,并对一些关键参数做分析,包括常用IP、地理位置、使用习惯、恶意特征、设备指纹等。基于大量模型和数据的分析,风控引擎便可以对用户身份做出一个预先的判断。如果风控引擎认为使用者是“好人”,便直接放行;如果判定为“机器”,则不予放行;如果存疑,便给出验证码滑一滑。

验证码能有效防止对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式(比如12306、各大银行网上个人银行登录页,BBS论坛等),虽然登陆麻烦一点,但是对网站还来说这个功能还是很有必要,也很重要。

方便用户的多种登录方式

“输入用户名和密码”作为标准的登录凭据被广泛用于各种登录场景。不过,在Web应用、尤其是互联网应用中,网站运营方越来越发现使用用户名作为用户标识确实给网站提供了便利,但对用户来说却并不是那么有帮助:用户很可能会忘记自己的用户名。用户在使用不同网站的过程中,为了不忘记用户名,只好使用相同的用户名。如果恰好在某个网站遇到了该用户名被占用的情况,他就不得不临时为这个网站拟一个新的用户名,于是这个新用户名很快就被忘记了。在注册时,越来越多的网站要求用户提供电子邮箱地址或者手机号码,有的网站还支持让用户以多种方式登录。比如,提供一种让用户在使用了一种方式注册之后,还能绑定其他登录方式的功能。绑定完成之后,用户可以选用他喜欢的登录方式。它隐含了一个网站与用户共同的认知:联系方式的拥有者即为用户本人,这种“从属”关系能够用于证实用户的身份。当用户下次在注册新网站时遇到“邮件地址已被注册”,或者“手机号已被注册”的时候,基本可以确定自己曾经注册过这个网站了。