引语:网络安全向来都是惹人关注的话题!安全的层级也是数之不尽,但是作为一个简单粗暴的防卫方式:验证码,还是比较有效的。因此,想来,谈谈验证码那家子的事儿应该也是比较有意思的!
最近看到一篇文章 黑客魔术(http://www.leiphone.com/news/201602/wsLS6uLbnH5M0rx7.html),其中心思想是:我们的计算机在网络世界里机关重重,但在物理世界里却近乎裸奔。
请抱以围观的态度观看本文,我们只是在读故事而已!本文将分几个点以及一些故事进行验证码闲谈!
1. 为什么要有验证码?
做网站开发的有几样东西是必须要有的:1. 分页;2. 验证码;3. 模板嵌套;4. 数据结构概念;5. 知道几个虚幻的名词;6. 会用google;
先说上面几个当中,几个特殊的东西吧。1. 很显然,分页是最普通不过的,没什么好谈的;2. 验证码则本文想谈论的东西,但是也是个司空见惯的东西,略去不说;3. 模板嵌套也没什么好说的,也就据说mvc中的v层;4. 数据结构概念,这个得好好说说了,所谓概念性的东西,就是不要求去理解他每个小零部件的具体样子,而是要你对整个数据库有一些宏观的认识,你只要大概理解了数据库是怎么工作的,然后你尽最大努力使其发挥最大的效能,这就完成了一些很好的设计了;5. 知道几个虚幻的名词,不是要我们都去寻找那些最新的技术,整天到处与人吹牛皮,而是真正的了解一些东西,你要做的第一件事就是,知道有这个东西的存在,如果你连听都没听过,你有什么资格谈提升,现在社会日新月异,你能保证你这个天才能想到所有别人走过的坑?别逗了,互联网的重大作用就是加速了各种人物技术之间的交流时间,了解了名词之后,通过互联网,打通所有的任督二脉,从而达到节省时间的效果;6. 会用google,这是个玩笑话,意思是说,要能够迅速找到需要的资料,请善待你的搜索引擎!
下面才是正式回答,为什么要验证码?
因为验证码是最简单有效的防御暴力破解的方式,假设没有验证码,随便弄一个程序,只要知道账户名称,再加上一些字符串猜想,设置一些规则后,让机器去执行的。按推算,知道用户名,密码肯定是可以破解出来的(最最有效方式还是限制错误次数)!而有了验证码之后,机械的暴力方式基本就很难搞定你了,当然,不排除一些超简单的验证码被识别以及一些黑客高手无论怎么样都能搞定你!这第一道门坎,也是很重要的门坎!现在看来,这是个很正常很简单的事,但是我们必须先向第一个吃螃蟹的人致敬!
2. 验证码的原理及发展?
验证码的原理是什么呢?最核心的原理就是,在页面显示一些电脑不那么好辨别的东西出来,然后后台里保存了他的内容,人通过肉眼可以很快识别出内容,提交后对比即ok。那么最开始的验证码是什么样的呢?也许就是一个图片,上面输出了几个数字,也许还是规则的数字,但是只要那时的计算机辨别不出来,那就够了。后来,就是各种奇怪的字体,字母,中文,其他文,夹杂点,倾斜,变形等等,总之就是越来越难机械辩认了!再后来就是一些声音啊,视频啊,算术题啊,解答题啊,选择题啊之类的,你能想得到的,都可以去干,只要不影响你的用户数就行!
3. 那些有趣的验证码?
有趣的验证码,1. 其实在12306的验证码出来之前,我倒还没想到有趣这两个字!大家都知道,12306今年的验证码是选择题加文字题,首先是看出题目的意思,如请选择图中所有的黄瓜和香蕉,哎呦,我去,这都什么鬼?再比如,请选择图中所有的章子怡和汪峰,哈哈,他完全可以这么干!2. 打电话的验证码,请输入手机号码,点击发送语音验证码,然后,马上就有人给你打电话了,“您的验证码是:123456,请不要告诉任何人!”,坑爹的是,她只说一遍,我TM还没习惯她的口音有木有?然后就是一遍又一遍的点击发送验证码,点击发送验证码,我点点点!叫你让我听不懂!!3. 解答题,请问新中国的第一位领导人是谁?你妹啊,考我历史呢,那我猜一个吧,邓某人,不对,毛主席,不对,我靠,答案居然是毛某人,知不知道直接称呼他老人家名忌讳很不好啊,还有更坑爹的,要求姓和名之间用空格隔开有木有??
4. 如果要你自行设计验证码,你会做些什么?
如果自行设计验证码,该怎么做呢?首先,肯定要确认你的用户群体都是些什么样的人,出相应的对策。如:如果是学生,就给他出算术题、选择题、填空题,必要的时候出几道解答题如社会主义的核心价值观是什么?四个现代化指哪些?中国唐朝为什么是最发达的国家?哈哈,保证他答得不亦乐乎;如果是程序员,就给他出判断语句,关键字填写,算法描述题,如要从A点到B点,中间有C、D、E...,请写出找出最短路径的伪代码!保管他服服帖帖;如果是姐姐大婶,就给她说选择题,解答题,如请选择所有没长虫子的大白菜,请问下雨天去买菜要注意些什么事项?乐意得很;如果是销售人员,只管给他出解答题,请问如何将一瓶矿泉水卖到100万?哈哈,她会给你满意的答案的!好吧,扯淡就到这里吧。其实,我TM只会去复制别人的代码,贴到自己的项目里,打完收工!!!
5. 一点小经验?
1. 验证码只是为了让机器不好辨别,但是对人一定是友好的,不好搞得太独特,否则,别人会离你而去;2. 验证码难免输错,注意输错返回时验证码的刷新;3. 不要一直使用一套验证码规则,轮换着来,主要是让想搞破坏的人感觉,事情没那么简单就行了;4. 在有必要的地方,应该加上token防止伪造请求;5. 一台服务器运行和一群服务器运行处理方式肯定是不一样的!
OK...
我从来不觉得技术很牛逼,我只是觉得好玩,然后讲给生活听!
不要害怕今日的苦,你要相信明天,更苦!
http://www.cnblogs.com/yougewe/p/5200879.html