本文目录一览:
- 1、关于验证码,高手来一下
- 2、关于网络诈骗用上人工智能拉响警报的介绍?
- 3、在电脑上一直输入验证码的是什么工作?
- 4、腾讯的点击验证码是什么原理
- 5、有没有什么验证码是采用人工智能技术的?
- 6、为什么需要验证码来区别计算机和真人?它的原理是什么?
关于验证码,高手来一下
它是一个隐藏了验证码的程序.
其实实现起来也是很简单的,比如你在数据库中或COOKIES中记录用户登录错误的次数,每次错误加一,错误超过三次则出现验证码.
ASP程序:
%
yzmerr=(如果有登录错误则值为"err")
response.cookies("err")=0
err=request.cookies("err")
if yzmerr="err" then
request.cookies("err")=err+1
end if
if request.cookies("err")3 then
(显示验证码程序)
end if
%
验证码的作用见上.
其实验证码它还有一个特别重要的功能,就是防止恶意破解用户的登录密码.如果没有验证码,黑客就可以用程序对用户的密码进行穷举,最终破获密码,因为密码总是有限字符的组合.
而加入了验证码,用穷举的方法几乎已不可能破解密码,因为验证码是随机的,它就是无限的了,而且用普通穷举密码的程序很难操作.
当然用最残酷的办法可以把密码连同验证码图片的显示字符一起破解,但这样一来,程序运行时间将会大增,相信没有谁会用连续数年或数个月的时间来破解一个普通的密码的.即使有,但如果用户中途(如一两个月内)修改了密码,而这个密码已被破解者穷举过了,那将使破解者的心血付诸东流,最终无法破解.
关于网络诈骗用上人工智能拉响警报的介绍?
近日,浙江省绍兴市越城区检察院以涉嫌诈骗罪对董健伟、吴波、赵雪妍、边春婧4人提起公诉。据介绍,“1·03”网络“黑产”系列专案涉案人员达160余人,被害人遍布全国20余个省、自治区、直辖市,涉案金额高达2000余万元。
若以涉案金额论,这个案子不算太大,但情节令人害怕,因为该案出现一个新动向:利用人工智能晒密撞库、聊天机器人,且属全国首例。为了提升安全性能,许多互联网公司的账号登录要求输入图片验证码,而“1·03”网络“黑产”系列专案中的黑客,利用人工智能识别图片验证码,识别正确率高达95%以上。在此平台被打掉的前3个月,已经提供验证码识别服务259亿次!
更不可思议的是,该案犯罪嫌疑人利用聊天机器人软件,一个人同时控制着一二十个端口,在微信、婚恋网站中假装成各种“美女”,同时和对方聊天交友,批量“谈恋爱”。不少人就在这些“虚拟美女”的诱惑中,上当受骗。可以想象,若不是公安机关及时破案,该诈骗案的“雪球”将越滚越大。
机器学习、神经网络、自动驾驶、疾病诊断……正在发展的人工智能,或许能将人类智慧和机器智慧结合起来,甚至将人类和机器结合起来,创造一个复杂美好现在难以描述的时代。中国科学院和央视共同主办的《机智过人》节目,向公众展示了人工智能这个超神奇世界。如顶尖人脸识别人工智能“御眼重明”,存储了1000万人的2亿余张图片,人脸识别度超过90%,并能实现跨年龄人脸识别,目前已在银行柜台、机场安检等多个领域投入使用。
科技是一把双刃剑,人工智能亦然。被好人利用,用在为人类自身服务,为世界创造美好未来,它就是一个再好不过的东西;不幸被歹人所用,用来坑蒙拐骗、实施罪恶,破坏秩序、挑战道德与法律底线,那就值得我们警惕。网络诈骗用上人工智能,无疑是向人工智能未来发展拉响的一次警报。对于人工智能发展出现偏离正常轨道的苗头,必须未雨绸缪,现在就予以重视。倘若坐视不理,随着人工智能迅猛发展与广泛普及,负面影响将会进一步显现,且不局限于网络诈骗。
你有张良计,我有过墙梯。利用人工智能技术检测欺诈与利用人工智能进行诈骗犯罪斗智斗勇是其中的技术解决方案,也是受互联网公司偏爱的防范路径,许多科技公司为此付出努力,并取得一定成效。如腾讯为了打击网络诈骗,采用了人工智能“麒麟”系统。该系统用于打击伪基站,基于大数据和深度机器学习,对伪基站进行精准定位,协助警方进行打击,伪基站所发出的诈骗短信,从伪主叫、内容、地址、经纬度和受影响用户程度等,都能得到“麒麟”系统的识别。
更深一层,在角度定位与法律供给。当人工智能可以像人类一样独立思考和决策,代替人类从事某些工作、担任某种角色(如汽车驾驶),人工智能的权利与义务何在,法律如何调整其中复杂的关系?当人工智能卷入犯罪案件中,责任主体如何界定,人工智能算不算具有法律和道德意识与行为能力的主体?如果不是,究竟应该由研发者、运营者还是使用者来承担责任?如果承认人工智能是有行为能力的主体,那么又该如何为“犯罪嫌疑人工智能”定罪量刑?这些问题都值得我们深度思考。
人工智能再厉害,网络诈骗也是在利用受害者的人性弱点,譬如轻信。作为利益主体,自我防范成本最低、效率最高。就算你“亲戚朋友”通过QQ或微信向你借钱,事先打个电话核实一下,不过是举手之劳,就可能躲过骗子精心布置的陷阱。
在电脑上一直输入验证码的是什么工作?
叫打码,需要人工操作的叫人工打码,如果通过软件实现的就是软打码。
腾讯的点击验证码是什么原理
对于伪造网络请求的攻击方面,还有很多技术细节,篇幅有限,如果感兴趣可以看一下我的这篇博客,讲的就是有关验证码方面的一些技术细节:
CSRF漏洞的原理
如果提到的哪个专业术语我没有做通俗的解释,请在下方回复。
如果觉得长,想要直入主题的话可以直接找到 ---重要内容分割线---,看那部分其实是这套验证码最核心的安全机制。
目前web前端的验证码主要分几类:
1 看到图形,肉眼识别后输入字符;
2 根据界面图形,进行鼠标、手指(移动端)交互操作;
3 短信、电话、邮箱验证。
其中第3条,很多时候往往会与第1条相结合起来,以防止CSRF漏洞造成的短信炸弹攻击。
包括用户无感知的人机检验方式(简单地如前端token+referrer判断,这个待会儿再讲)在内,
以上所说的所有手段,终究目的是一个,那就是检查当前访问者究竟是一个“人”,还是一台“机器”。
这在计算机研究领域被称为图灵测试,图灵是一位计算机科学家,他提出对于“人工智能”的定义是:如果把一台电脑放在一个与外界隔绝的房间里,同时把一个人放在一个一模一样的房间里,同时对人和电脑进行各种各样的提问、测试,如果两者做出的反应基本一致(总会有差异,哪怕人与人之间也会有不同),那么认为这台电脑的算法水平已经达到了“人工智能”的级别。
说了这么多,想表达的还是一点,对于“让机器模拟人的行为”或者说“把自己伪装成一个人”,这样的事情在专业领域是有很多研究的。现在网络上存在着诸多验证码、安全校验等等东西,很多人不理解,认为这种东西增加了人们对于软件的正常使用的成本。其实这些安全手段,都是为了防止黑客以各种各样的技术手段,伪造网络请求,假冒真实用户的身份去“刷”网站的各个接口。
下面回到主题,来谈一谈题主所提到的这个腾讯的验证码页面的技术实现。
粗略地翻了一下这个页面的源代码(对于web领域,页面程序的源代码是完全裸奔的,这一点与客户端程序不同,所以如果想要研究对方的代码,对于web开发者来说是一件比较容易的事情,换句话说web前端代码里边是没有太多秘密可言的,因此web的安全性也相对差一些),这个页面在我见过的一些验证码系统中是很常见的一种,就是前面提到的那第1种,看图识别输入字符的验证码形式。下面上代码:
先来看看在UI层面,就是最常见的,通过javascript在DOM上绑定的监听事件触发回调,如图所示,如果我把右边红圈中的click监听remove掉,点击按钮之后就什么反应都没有了,所以基本确定它验证码的逻辑都卸载了这个CT_btn_trigger的回调函数中。然后看看点击后弹出的layer:
全都是用DOM实现的,我在代码中没有发现任何flash object的痕迹(为什么提flash,这个也放在后边说),输入验证码之后监听网络数据包,找到了发送验证码的那个接口:
服务端的接受验证码的接口为 而我们刚刚输入的一条验证码,query字段名称是ans。这里的这一条网络请求是https协议传输的,包括整个qq安全中心的页面也都是上了https的,https协议与我们熟知的http协议最大的不同就是,通过加密手段规避掉了网络中间层对数据包的截获,这一点对于这套验证码来说还是值得肯定的,目前的很多验证码系统对于传输验证码的网络请求都没有上https。
昨晚看的仓促,刚刚又翻了一下发现了这一套验证码系统的核心部分,其实就是上面截图中的collect字段,感谢 @李默然 的提醒,这部分其实也就是我在前文中所提到的那个token,从collect这个字段命名不难猜出这个token是一个前端拼装起来的东西。具体如何拼装,在这里我就不一一扒代码了,考虑到毕竟是一个安全中心的页面,把技术细节在这里讲的太透了,普通用户也不那么关心,反倒是替别有用心的人省了点儿事。所以就不给腾讯的前端同学找麻烦了,在这里简单述说说吧。
collect参数,在用户点击这个按钮的那一刻,就会从服务端传过来一个collect参数,这时的collect参数中做了一些组装和软加密处理,拿到的是密文,明文中的内容不难猜测一定包裹了验证码所需的那张图片的url。
当输入验证码完成后,从客户端发往服务器的那条请求中,虽然ans字段中的验证码是明文,但是还依然带了一个collect字段,而这时的collect字段和上一个collect字段内容是不同的,显然也是一个加密后的结果,推测可知这个collect字段在服务端解密后拿到的明文中,至少也要包含用户本地操作的一些数据,这数据中就包括,他输入的那段验证码所对应的图片究竟是哪张。也许存了图片的url,也许是服务端记录图片的某一组key值,但这个对应关系是一定要有的。
以上提到的collect字段,其实是整个这套验证码系统最为关键的一点,黑客如果要破译这层csrf防御,首先需要搞明白两处collect字段是如何加密的。如果放在其他系统客户端的角度来说,破译这层加密的难度不小,但是由于web客户端的代码是裸奔的,这个天然的劣势导致,黑客不一定要以数学的方法去解出这套加密机制,而是可以直接翻看源代码,看明白collect字段是怎么拼装的,然后只要结合起图片识别模块就可以对这个接口进行强刷了。由于验证码本身是最简单的图片6位验证码,所以图像处理方面识别难度不是很大。
总的来讲,这一套验证码体系属于中规中矩,可能因为并不涉及到金额安全问题,所以也并没有十分重视。
如何优雅地屏蔽百度广告推广
下面简单讲讲刚才翻源码过程中遇到的几个技术细节,值得了解一下:
1 这样的验证码安全吗?
很遗憾,我是个喜欢讲实话的人。这样的验证码,不是绝对安全的。
2 什么是CSRF漏洞?
CSRF简单地说就是伪造的网络请求,黑客以这种手段,用脚本写出一些自动化程序,非正常地使用正常用户在访问网页时调用的http接口,从而达到其他目的(盗号,刷接口,甚至将服务器拖库)。这也正是网页加入验证码的根本原因,提高了黑客去做CSRF攻击的成本,因为他的自动化脚本可以发送任何用户相关的数据,但却很难猜出每次都随机出现的图形验证码中的字符。
3 这样的验证码存在哪些安全隐患?
简单地图形验证码现在已经不算是安全的了,因为以如今的图像识别技术,黑客可以构造一套自动化脚本,首先获取验证码的那张图片,然后把图片交由专门做图像识别的程序模块进行识别处理,返回一个识别结果,再把识别的结果像正常用户填写验证码一样回填到http请求的参数中去。我们看到,他在http请求的参数中,是直接把验证码的字符放在里边,而没有对字符做任何md5、AES一类的处理,所以黑客可以很容易的知道这个参数是什么,并构造上述的一个自动化渗透工具。来对服务器进行攻击。他的图像识别算法的能力不需要达到90% 80%这么高,哪怕有10%的精度,黑客可以把这样的一套脚本攻击程序分布式地放在各个机房的机器上,对服务器造成一定的攻击。对于你所看到的这个qq安全中心的页面是否安全的问题,真的没有是和否的区别,只有值得与否的区别。毕竟构造一套上述的自动化攻击程序以目前的技术,成本还是很高的。但不是不可能。这也解释了,为什么春节抢票期间,12306出台了那么一套变态的验证码,就是因为抢票的这个利益太大了,如果有人能够破译它的验证码系统,损失是铁路部门无法接受的,所以宁可让验证码把普通用户难到骂娘,也绝对不能给黑客的自动化攻击程序留下可乘之机。
4 为什么我要提到flash?
flash作为软件行业中被诸多安全漏洞缠身的一项技术,在web领域,某种意义上却能算是银弹了,至少我是这样认为的。为什么这么说?就像我刚才说的,软件行业,客户端代码其实都是没有什么秘密可言的,你真的想把一些安全级别非常高的代码逻辑保护起来,那只有放到服务端里才可靠,这就是为什么大家申请网银卡的时候都会配给一块U盾,因为软件客户端永远是不安全的,或者说相对于这样大额度交易的利益来讲,在黑客们面前他不够安全。所以要依靠U盾的硬件加密手段,把一些重要的加密逻辑焊死在芯片中进行固化保护。那么话说回来,为什么又要说flash在web领域是安全的呢?因为web太不安全了,作为一个客户端来说,它的一切代码都是裸奔的,任何打包、编译都没有,(有人可能要提到如今的webpack等打包工具,但那些东西实际意义并不在于打包而在于模块化),通俗的解释就是,任何一个懂前端js代码的工程师,都可以很低的成本,读懂其他网站前端代码中做了一些什么事情,这相比其他平台的客户端开发来说是非常可怕的。
真是因此,很多web网站都会把一些不希望别人“轻易偷走”的数据,写到一个flash客户端中,然后再把flash编译后打包的swf作为一个静态资源加载到页面中(因为现代浏览器都是支持flash的),让flash和用户交互。想要把flash反汇编出来,搞懂他里边做了什么,对于同样从事flash的AS开发工作的工程师与从事web前端开发工作的工程师,这本身从实现成本上就比web前端的html和javascript代码要高很多。
另外,如今的绝大多数web工程师,都不太熟悉flash代码,所以把flash作为web系统某些安全隐患上面的银弹,还是有一定道理的。这里我可以举一个目前线上的例子,酷狗音乐就是通过flash播放器,解码一种acc格式(特殊的音频格式,普通浏览器和播放器无法直接播放)的音频文件,来实现音乐歌曲的防盗版。因为你前端就算把他音频文件的url拿到了,下载下来,你也不好直接播放。
对于这部分,就不再扯远了。
有没有什么验证码是采用人工智能技术的?
验证码的前端代码肯定是用JS编写的,但是后端SDK就要看网站是用的什么语言了。
而所谓的人工智能验证,其实就是指验证系统中识别人机的“引擎”采用的是人工智能技术。
据我了解GEETEST极验研发的验证安全系统就是利用人工智能技术来对人机轨迹进行区分。
为什么需要验证码来区别计算机和真人?它的原理是什么?
现在很多网站的注册和登录都需要使用验证码,他们的目的是用来区分计算机和真正的人。
验证码的直译就是全自动区分计算机和人类的图灵测试,图灵测试它其实在人工智能是一个非常著名的实验,它的原理是这样的,实验者,通过询问一台机器和一个人一些问题,是实验者无法分别他们两个的区别。
可是如果实验者无法区分他们两个的分别,验证码就是这个图灵测试的反向和变种,他的目的就是用来区分计算机和真正的人类,哪一个是什么。
这个东西的产物在出现之前,是因为当时在互联网并不发达的时候,垃圾邮件满天飞,有的人通过注册了大量的新型账号,发布大量的垃圾广告。
但是程序员现在的技术发现计算机的程序比较难,准确的去识别手写的东西,于是验证码应运而生。
它可以有效的避免暴力承受破产的威胁,在图形验证码的基础之上慢慢演化出了滑块验证码,图像验证码,智能验证码等新型的方式。
但是我们现在主要的验证码都是通过短信来发送,这样比较方便快捷,也大大的减少了大家去识别验证码的时间。
这样的方式可以在一定的程度上避免自己的账号被泄露,身份被电脑软件所伪造的情况。电脑程序因为他自己本身的局限性他们是无法去辨别验证码输入的背后是人类还是软件,但是随着技术的发展,他们的识别程度会越来越高,机器也会慢慢的具备识别和理解验证码的能力。所以我们为了干扰机器的识别能力,我们可以故意在里面增加一些图像噪点,这样可以在页面上的脚本来进行进一步辅助判断,用来进一步识别这是人类操作的行为还是机器操作的行为,可以大大的减少自己的账号被泄露的情况。
这就是验证码的本质,在当初互联网刚出现的时候接触的限制性导致他们无法准确的识别很多的图像问题。