现在手动输入验证码花样百出,从最开始的输入数字,到数字和字母混合,再到后来的输入汉字、输入成语中缺少的那个字以及不同位置的划动条,还有很多验证码使用多种背景色,使得验证码信息非常仔细看但也有看不清的情况出现。验证码之所以设计的这么复杂,归根结底只为了证明一件事情:操作者是真实的人,而不是机器人。 为什么要证明操作者是人呢? 为了安全! 验证码一般都出现在需要输入密码的地方,当然现在也有一些论坛,在频繁发贴的时候会让用户输入验证码,以证明不是机器人在灌水。 坤鹏论在之前的文章是也提到过,密码破解有几种方法: 找系统漏洞算是比较好用的一种,以前很多网站被黑,就是因为系统有漏洞,类似于一些SQL注入之类的漏洞可以让黑客直接通过浏览器增加一个后台管理员账号,从而通过管理员直接登陆,当然还有一些漏洞是可以直接下载数据库的。 被世界五大黑客之一凯文米特尼克用的出神入化的一种破解方法叫:社会工程学。比如分析管理员或有权限人员的行为特点,密码设置习惯,从而分析出密码,或者冒充管理员。当然米特尼克的黑客技术也是超一流的,这个不能否认。这也是为什么很多地方都提示不能使用太简单密码的原因,甚至有些产品直接不让用户以“123456”、“123qwe”之类作为密码,就是为了防止被破解。 还有一种密码破解的方式是通过漏洞把数据库down下来,读取数据库中用于存放密码的字段,2003年以前很多网站的管理员密码都是明文存放在数据库中的。后来数据库中大部分存方密码的字段都是存放经过加密后的密文,也就出现了反破解的技术,这中间MD5加密慢慢被大多数技术人员所接受,作为加密密码的算法。MD5加密的好处是不可逆,也就是说,即使黑客拿到了密文,也无法通过算法得到加密前的密码。 那有没有一种可以有效破解密码的方法呢? 有,暴力破解被认为是无所不能的破解方式,理论上只要计算机运算速度足够快、时间足够长、可试错机会足够多,没有什么密码是暴力破解不能破解的。 对于网站安全而言,运营速度足够快、时间足够长这两个条件都不是网站可控的,只要密码成功破解带来的利益足够大,就会有要花时间投入成本去破解密码。网站唯一能控制的就是试错机会,而验证码就是用来控制试错机会最好的方式之一。 暴力破解必须建立在速度基础上,一秒钟可以尝试一万个密码甚至更多,这样破解时间就会短。如果半分钟尝试一个密码,相信没有谁会有这样的耐心。 验证码正是起到了这样的作用,之所以设计的复杂,就是为了他只能让真正的人去操作,电脑是无法操作的,这样也就有效避免了密码被暴力破解。 所以再遇到那种难以识别的验证码时,你是不是就知道为什么技术人员这设计这么一个变态的验证码了?比如12306网站的验证码,很多人抱怨屡试屡错,连人都输入不对,更何况是机器人呢。安全性杠杠滴。 不过坤鹏论认为,验证码在安全性与使用便捷性方面应该找到一个平衡,既能起到阻止机器人的目的,又能很方便的让人使用才是最好。不过如果二者不能兼得的情况下,显然安全性会更重要一些。 |
|