关于无效验证码

验证码作用更多是防止随意的机器,目的是给机器造成麻烦,但是我也见过很多项目的验证码是没有任何效果的,这里说的无效验证码包括图形验证码和短信验证码。

为什么说是无效的,不是因为验证码的图形做的太简单很容易图形识别,这种不算无效的。

下面举例子无效的验证码,

图形验证码,点击获取验证码变图形,点击后,服务端把真正的图形验证码对应的文字返回给前端(web或者安卓或者ios),然后你在输入框输入验证码,前端(web或者安卓或者ios)在本地判断,web的就是指js判断了,(同理安卓 ios的也是判断输入框的值等不等于某个值),如果你填写的值与服务端返回的验证码不相等,在点击提交时候,前端(web或者安卓或者ios)提示你的验证码输入有误,进而不请求提交信息的接口。这种在普通测试人员里面看起来似乎没毛病,普通测试人员会用等价类,填不正确和正确的验证码进行测试,当然发现不了什么大问题。但是我们换个思路,直接请求提交信息的接口,可以看到验证码并没有同其他参数一起post到服务端,那这就很好办了,在web  ios  安卓里面操作,你不填写正确的验证码,他会提示你验证码错误然后不请求提交信息的接口,但你也可以不用这些前端,用requests直接请求接口,那么这就是要说的无效验证码了。

短信验证码也有无效的情况,原理和这个差不多,也是前端(包括web ios 安卓)请求了服务端短信验证码接口,然后服务端把验证码返回给前端了,并且服务端去用手机号码和验证码调用短信平台,前端在你提交信息时候先判断你填写的验证码是不是正确的,如果正确了再请求提交信息的接口。这种也可以直接用requests解决,当然如果你不会requests,你也可以用抓包工具如f12 fiddler抓包服务端返回给前端(包括web ios 安卓)的验证码,这样即使你没有别人的手机卡收不到短信,你也可以轻松获得任何手机号码的验证码,然后把抓包得到的验证码填在输入框,提交信息时候就不会提示你验证码有误了。试想这种地方如果是在短信找回密码的地方,会有多么严重的后果。

短信验证码接口做的太简单的不行,所有短信验证码的地方前面应该加入一个图形验证码。万一有人恶意请求接口,短信平台的费用刷刷的没了,这不是危言耸听,是我自己见过并且实践过的,一个很少人用的项目,不到一天2000元短信费用居然耗尽了。

所以,各位要注意了,很多没很多经验的开发团队,过分的依赖前端处理信息,造出这种项目是很不好的,这种验证码的目的已经是倒行逆施了,验证码的目的变成了防人不防机器了。

本来是要举实际例子,把真实的地址贴出来,但考虑一下这样还是不好。

时间: 2024-11-06 13:56:44

关于无效验证码的相关文章

Python爬虫实战(5):模拟登录淘宝并获取所有订单(1)

经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 本篇内容 1. python模拟登录淘宝网页 2. 获取登录用户的所有订单详情 3. 学会应对出现验证码的情况 4. 体会一下复杂的模拟登录机制 探索部分成果 1. 淘宝的密码用了AES加密算法,最终将密码转化为256位,在POST时,传输的是256位长度的密码. 2. 淘宝在登录时必须要输入验证码,在经过几次尝试失败后最终获取了验证码图片让用户手动输入来验证.

JAVAWEB开发之HttpServletResponse和HttpServletRequest详解(下)(各种乱码、验证码、重定向和转发)

HttpServletRequest获取请求头信息 (1)获取客户机请求头 String getHeader(String name) Enumeration<String> getHeaders(String name) Enumeration<String> getHeaderNames() (2)获取具体类型客户机请求头 int  getIntHead(String name) long getDateHead(String name) 日期对应毫秒 (3)常见的请求头 re

Python识别网站验证码

http://drops.wooyun.org/tips/6313 Python识别网站验证码 Manning · 2015/05/28 10:57 0x00 识别涉及技术 验证码识别涉及很多方面的内容.入手难度大,但是入手后,可拓展性又非常广泛,可玩性极强,成就感也很足. 验证码图像处理 验证码图像识别技术主要是操作图片内的像素点,通过对图片的像素点进行一系列的操作,最后输出验证码图像内的每个字符的文本矩阵. 读取图片 图片降噪 图片切割 图像文本输出 验证字符识别 验证码内的字符识别主要以机

关于php验证码无法显示的问题的自我反思

很早之前在金华佗创业团队的时候,团队的内部网站后台登陆的验证码无法正常显示.当时正在开始学习php,所以对于php的绘图技术并不了解,也不知道验证码的作用.... 我请教一个学习php的师兄,师兄可能当时比较忙吧,他给我的建议就是去服务器,把验证码这一块的代码给注释了,不用验证码的功能.这样做果然省事,但只是个权宜之计,只能暂时蒙一蒙不懂技术的老板,所以当时这件事情就暂时过去了. 事后我反思了一下,有两点感悟: 1)一个科技公司,有一个技术总监很重要.不懂技术的话,老板也会被一个菜鸟"欺负&qu

验证码有存在的必要吗?——论非人为操作的可识别性

从验证码第一次被应用于网络中,早期的验证码是一串非常简单的形状标准的数字,经过长期的发展,形式越来越多样化,人们似乎已经习惯了,没有人去质疑它有什么问题,更没有人去思考它是否有存在的必要.复杂的验证码虽然起到了防范非人为操作的作用,但是带来的时间及效率上的损失更是巨大的.的确,它不是一个错误,但是我们从效率上来考量,它是一个累赘.我们有必要让人们从繁琐的辨认.输入.输错重输的严重耗费时间的劳动中解放出来. 很早以前我就思考一个问题:验证码在理论上是否有存在的必要性呢? 人为操作与机器操作(非人为

Python 爬验证码

主要实现功能: - 登陆网页 - 动态等待网页载入 - 验证码下载 非常早就有一个想法,就是自己主动依照脚本运行一个功能.节省大量的人力--个人比較懒.花了几天写了写,本着想完成验证码的识别,从根本上解决这个问题,仅仅是难度太高,识别的准确率又太低.计划再次告一段落. 希望这次经历能够与大家进行分享和交流. 注:代码中的 username与password都是无效的! Python打开浏览器 相比与自带的urllib2模块,操作比較麻烦.针对于一部分网页还须要对cookie进行保存,非常不方便.

验证码绕过

什么是验证码? CAPTCHA是(全自动区分计算机和人类的图灵测试)的简称,是用于区分计算机和人类的一种程序算法,这种程序必须能生成并评价人类能很容易通过但计算机却通不过的测试. 像我们平时最常遇到的,就是基于图片的验证码.这类图片验证码通常包含的,都是些易于用户识别简单的验证信息.如下图所示.用户必须准确的识别图像内的字符,并以此作为人机验证的答案,方可通过验证码的人机测试.相反如果验证码填写错误,那么验证码字符将会自动刷新并更换一组新的验证字符,直到用户能够填写正确的验证字符为止. 验证码的

验证码 Captcha 之大插件

验证码 Captcha 之大插件小用 不知何年何月才能完成OADemo啊,总之还是一步一步来吧,这段时间开始着手了,先做登陆.  前段时间研究了一下在CentOS7下安装Mysql和Memcached服务,并测试了用C#操作,结果还行. 今天做一个简单的基于Bootstarp的响应式登陆页面(其实是在网上下的模板),不管是登陆还是注册吧,都会用到验证码,以前是用GDI绘出来的,觉得太丑了,百度的关于.net的验证码绝大多数也是用的这种方法,最后试了一下captcha,觉得还挺好看的,所以就试着用

一步一步实现MVC5+EF6+Bootstarp+Autofac+NoSql实现OADemo 之登陆(一) 验证码 Captcha 之大插件小用

不知何年何月才能完成OADemo啊,总之还是一步一步来吧,这段时间开始着手了,先做登陆.  前段时间研究了一下在CentOS7下安装Mysql和Memcached服务,并测试了用C#操作,结果还行. 今天做一个简单的基于Bootstarp的响应式登陆页面(其实是在网上下的模板),不管是登陆还是注册吧,都会用到验证码,以前是用GDI绘出来的,觉得太丑了,百度的关于.net的验证码绝大多数也是用的这种方法,最后试了一下captcha,觉得还挺好看的,所以就试着用用. nugit控制台install-