『美好的人眼裡映出的世界也是美好的。』 收藏本站
登陆 / 注册 搜索

阅读:1642   回复: 1

为什么网站需要验证码?

[复制链接]
左手天才 「龙战于野」 2022-10-4 12:00 |显示全部楼层

你以为大家都知道的事情,很可能有 99% 的人都不知道。

做点科普,为啥网民输入个东西,会冒出验证码,以及,验证码为啥会越来越变态。 懂这方面技术的同学也可以忽略本文。

为什么网站需要验证码? tt2.jpg
为什么网站需要验证码? 33.jpeg
为什么网站需要验证码? 22.jpg
👃🌞🍧™🦌‎
技术背景的童鞋大概都知道,非技术背景的可能需要了解一下,验证码的目的,是将真正的人类,和机器区分出来,什么意思呢? 各种程序,模拟器,可以模拟人的行为,自动完成登录,购买等行为,这就带来了严重的问题,简单说有如下几项

第一,可能导致暴力密码破解和撞库攻击,攻击者可以通过程序高频次大量测试帐号密码的登录行为,如果攻击者通过彩虹库获得海量用户信息,可能导致目标系统的大量用户帐号密码被识别,导致帐号内资产失窃或重要内容泄露。许多巨头都面对过这个问题。

‏👔🗑😤💅


第二,刷票,刷单行为,对紧缺资源,秒杀,优惠券等内容,机器程序可以模拟人的行为快速海量的进行尝试,从而短时间内将这些资源一扫而空,导致正常访问人群无法购买或拿到这样的资源和产品。

实际上,服务端的验证程序,是无法判别,这个请求,来自于人类,还是另一个程序,那么,就需要有一种手段,来做这样的判别,除了一些常规的手段,(比如单一ip限制,cookie限制,基于统计规律的限制,但并非无懈可击),最常用的就是验证码,系统服务端生成一个验证码,让客户端以图片方式展示,人的肉眼识别并给出答案,服务端验证,从而排除机器人的影响,保障系统安全。

但是,所谓道高一尺,魔高一丈,验证码最早是简单的图片数字,或图片文字,然而,强大的OCR技术早已看穿了一切,网上都有开源的验证码自动识别程序。所以现在验证码就会变得越来越变态,越来越复杂。 不知道各位有没有注意,包括腾讯,以及谷歌,验证码的识别难度都特别巨大,每次都让我觉得自己老眼昏花感慨不已。🧑‍💻‏🧦🧻😈✌

当ocr技术越来越牛的时候,验证码就开始出现了新的逻辑,比如,让你做一个数学计算,让你做一个多选题。 但是不是这样就可以战胜机器人呢? 很遗憾,依然不够充分。

ocr既然能识别数字和字符,加上一些定义匹配的特征,就可以识别一些计算符号,不管是数学计算符号,还是中文计算描述,哪怕是汉语拼音,都可以被识别并在程序中自动完成。
👩‏👙🔒😘🤙
那么,如12306这样的验证码,是不是程序就完全没辙了呢。纯粹的程序,的确是这样,然而,对于有心的开发者而言,此事并非无解,简单说就是,程序+人力,穷举。什么意思呢?将所有出现过的图片通过人工识别打上标签(12306的验证图片不可能是无穷的吧,也不可能是随时更新的吧,只要图片是有限度的,更新是有时间周期的,那么就是有空可钻的),那么当标签和图片都入库后,程序就可以自动识别和选择。(当然,可能图片出现的时候会随机加一些水印或其他处理防止程序识别,但过滤这些处理的程序也是有的,问题是目前不确定12306是否有这样做) ,一次人工识别的成本,刷票程序就可以正常工作了。 这样就存在一种可能性,就是这种变态的验证码,到最后,防了君子,却很可能依然防不住刷票工具。

其实说来这事12306的确有点冤枉,因为去年几个互联网公司各个宣称自己实现了刷票插件,大家集体轮奸12306,不但人为加剧了订票网站的系统负载,而且也带来了订票的不公平性。今年这趋势,看来12306依然在劫难逃,所以,只好出此下策,但我的判断是,机关算尽然并卵,反而被各路网民和段子手讲个没玩。

那么,区分机器人,是否真的无解,或者真的难于上青天呢?🧒‏🩰💿😤👈

这是今天的开放性问题。

其实我还遇到过一些设计不错的验证码,比如,提供了一个可以拖拉的小button,提示拖到指定位置。 比如,一个简单的小拼图游戏,让你完成正确组合。但是,是否就能够规避程序的识别?我个人认为,依然不是很有把握。识别人与机器的工作,依然是一个特别艰巨的任务,而且随着人工智能技术的发展,这个任务可能会越来越难,兼顾用户的操作顺畅性和对机器的过滤,也会格外的艰难。

👂⛄🍌☪🐮‏在无法彻底规避机器识别的情况下,常见的可行策略是,增加用户的输入成本,来减少机器人的比较优势。

比如说,时间成本,让用户必须等待10秒才可以输入,而服务端也会校验界面展示和输入完成的确认时间(服务端必须校验,否则就只过滤了正常用户,而放过了刷票用户),可以有效防止黄牛刷票(输入成本变高,但不能杜绝)。

比如说,短信验证码,同一个手机一分钟内只能收一份预定短信,但据说目前存在一些可以大量申请更换垃圾手机号码的软件,不确定是否可行。🧑‍🍳‌🥼🔍😶👊

有更好的设想,也欢迎留言。 至少目前,我看到的是,google还在用变态的验证码考验我的视觉。(多次密码输入错误后出现,在兼顾用户正常操作和防止机器人之间寻求平衡)。


如何在兼顾用户易用性的同时,快速有效识别程序和人类的行为,是一个行业经典难题,其应用场景不仅仅是12306,还包括邮箱(撞库),微博(撞库),即时通讯(撞库,外挂工具,刷状态工具),电子商务(秒杀,限购,刷优惠券),以及游戏(很多原本很好的游戏策略被外挂玩死,这种案例数不胜数)。 谁能有完美思路彻底攻克这个问题,我个人认为,值得一个图灵奖。👨‍🚒‌👑🪝😇🦴


作者|caozsay
上一篇
下一篇
帖子热度 1652 ℃

狮吼翰海 「初入古黑」 2022-10-4 12:03 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

最近发现自己陷入了一种状态,叫开机迷失。
开电脑前,该做什么清清楚楚。但只要一登录,随手开个网页,刷下新闻微博甚至仅仅是音乐网站,然后再回过神来,已经到了深夜,要做的事一项没做。👩‏🎺🤩✋
而最痛苦的是,在睡前闭眼的时候,整个被浪费的白天和那些被耽误的正事,总会掺杂着负罪感,无比清晰地浮现。
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

快速回复 返回列表