推荐.NET教程:
ASP.NET
C#
开发环境
Ajax教程
控件开发
统计报表
数据库
Web服务
安装部署
CommunityServer
NHibernate
DataGrid/GridView
实用代码
VS2005
示例源码
MVC/三层
SqlHelper
入门源码
开源
CMS
Ajax/Atlas
C#.net
毕业设计
源码
经典代码
商业
本站作品
持久层
随书源码
WebService
英文/汉化
Asp.net2.0
阿牛·乐园
每天进步一点点
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
::
71 随笔 :: 14 文章 :: 377 评论 :: 13 Trackbacks
验证码的思考,你的验证码安全吗?
以前写过一个通过对比验证码数字Region的方法,来识别背景单一且字体大小单一的验证码数字。写成了后,发现很多网站,都只是在得到验证码图片时来改变验证码,这样的话,如果我们只访问图片一次,然后每次都用这个数字(人眼看)提交,就可以达到一直破解网站用户名密码的效果。
最主要的,发现移动公司也有这样的问题存在,真是不应该呀。不过,但是限制了密码重试次数,还好还好。
在此,希望大家引以为戒呀。
至于“不是让计算机看的,是让人看”,没有别的意思,只是希望人能够看得懂。必竞验证码是用来对付计算机识别的。
posted on 2007-03-26 17:18
阿牛
阅读(4187)
评论(42)
编辑
收藏
所属分类:
ASP.net
、
C#
、
其它语言
评论
#1楼
2007-03-26 17:55
Cat Chen
有些人做系统不是为了安全,而是为了应付客户或者上司,让别人看到——您说要的验证码功能已经做好了,那就行了。
回复
引用
查看
#2楼
2007-03-26 17:59
随风流月
@Cat Chen
精妙。
回复
引用
查看
#3楼
2007-03-26 18:08
☆聊ゾ聊☆
汗,偶的程序也有这个漏洞,赶紧改改,谢谢楼主。
回复
引用
查看
#4楼
2007-03-26 18:21
fhmsha [未注册用户]
看不懂你在说什么
如果我们只访问图片一次,然后每次都用这个数字(人眼看)提交...
提交一次验证码就变了啊...搞什么笑
回复
引用
#5楼
2007-03-26 19:09
join [未注册用户]
没有看明白,希望LZ说明白点。
回复
引用
#6楼
2007-03-26 19:37
Microshaoft
encrypt(随机验证码+时间戳)
存到内存cookie
回复
引用
查看
#7楼
2007-03-26 19:43
东吴居士
看的不明白,望赐教!!
回复
引用
查看
#8楼
2007-03-26 20:30
Jeffrey Zhao
@fhmsha
lz的意思就说,只有获取图片时才变。提交验证码时是不变的。
回复
引用
查看
#9楼
2007-03-26 21:20
lee[匿名] [未注册用户]
谢谢lz,这个漏洞真的很严重。
修改程序去。
回复
引用
#10楼
2007-03-26 22:06
阿毅 [未注册用户]
嘻嘻嘻,俺经常利用此“漏洞”。
修补方法:验证提交的验证码之后更新(或清除)session保存的验证值。
回复
引用
#11楼
2007-03-26 23:17
天轰穿
恩,不错,登陆后立刻清楚session中的值
回复
引用
查看
#12楼
2007-03-26 23:47
若寒
可真没注意这个问题!
我就用登陆后立即清除Session的值这个方法.
谢谢!!!
回复
引用
查看
#13楼
2007-03-26 23:55
风云.NET
AreYouHuman 博客园里还把验证码的值写到这个里面啊..
也是不要写识别代码就可以搞定了.这样别人写一些自动留言机就很容易了
回复
引用
查看
#14楼
2007-03-26 23:56
风云.NET
不过,偶一般是不会说这种事情,留着以后攻击别人时候用.
回复
引用
查看
#15楼
2007-03-27 00:17
YAO.NET℡
咦.还果然没注意这个问题.
回复
引用
查看
#16楼
2007-03-27 08:48
亚历山大同志
验证码用过后就要销毁这个和上完厕所要擦屁股是同理可得:}
回复
引用
查看
#17楼
2007-03-27 12:22
生米煮成稀饭
有道理啊!!厉害
回复
引用
查看
#18楼
2007-03-27 12:46
Jeffers Yuan
@亚历山大同志
验证码用过后就要销毁这个和上完厕所要擦屁股是同理可得:}
厉害,精P
回复
引用
查看
#19楼
2007-03-27 13:20
skyover [未注册用户]
我怎么没太看懂呢,智商太低了。
回复
引用
#20楼
2007-03-27 14:31
yuuhhe
不知道各位有没有用到OneNote2007中的“复制图片中的文本”的功能?
其实就是一个OCR的实现,可一旦在程序中调用,那破解可就……
回复
引用
查看
#21楼
2007-03-27 21:40
Cat Chen
@yuuhhe
所以验证码一般都要防OCR的,例如扭曲的字体、迷彩的背景。
回复
引用
查看
#22楼
[
楼主
]
2007-03-28 10:20
阿牛
我写了一个,不过是随机的字体,随机的字体大小,随机的旋转.
http://www.cnblogs.com/evlon/archive/2007/03/26/688695.html
回复
引用
查看
#23楼
2007-03-28 11:19
民文 [未注册用户]
还是不明白楼主是什么意思啊?将验证码放进SESSION里,第一次提交的时候就是刚生成的验证码,以后每次提交的时候SESSION里的值实际上是上次生成的验证码,只有在页面呈现完毕才将SESSION里的值更新为新生成的验证码.这里有个执行先后顺序的差别. 但是对于楼主说的是什么意思楼主能不能再解释一下啊?谢谢啊
回复
引用
#24楼
2007-03-28 12:18
Tiger!
百度的不知道有这个问题吗?
回复
引用
查看
#25楼
2007-03-28 13:18
打死对方 [未注册用户]
每次把session清空就可以了
回复
引用
#26楼
2007-03-29 12:45
Summer [未注册用户]
这是个问题,引以为戒。
回复
引用
#27楼
2007-03-29 16:46
美文宝车
终于看明白
回复
引用
查看
#28楼
2007-03-29 18:03
东吴居士
看明白了。不过这个太傻x了。。
哪个网站这么做的?给我看看,哈哈
一般提交post的时候会refresh那个image的。。。
回复
引用
查看
#29楼
2007-03-29 20:55
qiyue [未注册用户]
还不明白说什么?
回复
引用
#30楼
2007-03-30 11:15
sunyc [未注册用户]
@东吴居士
看清楚再说话
回复
引用
#31楼
2007-03-30 15:01
laifangsong
看了几个评论才明白楼主说什么。
确实,这个问题以前一直没注意。
提交完清除session中的值就可解决问题了。
回复
引用
查看
#32楼
2007-03-30 15:18
Amnoh
但是限制了密码重试次数,还好还好
-----------------------------
这是关键,说明人家已经防范了,不一定非得每次都换个新图吧?
像百度的,更是连着点“看不清”那个链接,刷N次,也还是那个码,只是换换样式,这样也成的。
回复
引用
查看
#33楼
2007-04-04 09:21
上海 [未注册用户]
阿牛 :
你的表达能力真差!这么多人不明白你说的是什么意思!你也不能出来解释下啊?
回复
引用
#34楼
2007-04-06 21:47
iyond [未注册用户]
@上海
一些网站的验证码是在你请求图片的时候才更换一下.如果我们只是使用普通的浏览器进行表单的提交,可能没有问题,因为每次提交完成后,浏览器都要将页面上的图片重新请求一次.这样验证码就变了.
但是如果我自己写一个程序,只是向表单的交数据,而不去请求其它的东西(包括验证码图片)的话,就不会引发验证码更新,我就可以一直使用这个验证码重复提交.
回复
引用
#35楼
2007-04-11 17:11
涛仔28
@iyond
请求验证码以后服务器程序要清掉这个session的验证码重新生成的嘛
回复
引用
查看
#36楼
2007-05-08 20:54
neil.zhang [未注册用户]
我有个问题,验证码保存在 session 中,那不是可以在客户端获取吗?那我通过程序每次从session中获取验证吗,不就是一定能匹配上?
回复
引用
#37楼
[
楼主
]
2007-05-11 08:58
阿牛
@neil.zhang
客户端不能取Session中的东西,因为Session只保存在服务器上,且只是用了唯一的客户端标识(SessionId)来索引.
回复
引用
查看
#38楼
[
楼主
]
2007-05-11 08:59
阿牛
@上海
Iyond同事解释的好.哈哈.
回复
引用
查看
#39楼
2007-06-22 23:36
蓝色奇迹
出售高级验证码识别引擎全部Delphi源码,可准确识别新浪动网百度淘宝QQ等多种复杂验证码
输出为一个标准DLL,可供VB,VC,Delphi,C#.NET,VB.NET等多平台调用,其中用到了Transym OCR识别引
擎(国外最强悍的商业OCR),另外加上独具特色的边缘检测字符分离、旋转倾斜纠正和通用字符匹配算
法(无论字体和大小),使得该引擎对于像新浪、动网、淘宝、QQ、百度等多种验证码均有理想的识别
率,是目前国内非常出色的验证码识别引擎。附详细的调用实例和代码注释。价格500元。提供售后技术
支持,协助客户调试代码。联系作者QQ:631753663
效果怎么样一试就知道。
DEMO下载 (电信)***/soft/advocr.rar
(网通)cnc.purejoy.cn/soft/advocr.rar
回复
引用
查看
#40楼
2008-05-13 21:12
Mon [未注册用户]
target="_blank"
回复
引用
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
闪存
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2007-03-26 17:25 编辑过
相关文章:
全国百强县排名完全名单——你老家上榜了吗?
ASP.net 验证码(C#)
相关链接:
所属分类的其他文章:
第一个asp.net的workflow例子
发现移动太NB了,验证码图像路径直接包含验证码
用控件的方式解决问题-在客户端关联WEB控件引用
ASP.NET AJAX 's UpdatePanel 中使用Page.ClientScript.RegisterStartupScript 失败
用"指定字符组成的任意进制"转换生成不带4的卡号
UpdateProgress之用半透明DIV加居中的提示进行时.
如何使HTML元素的事件,使用我们封装类的成员函数作为处理函数
0自动转型到DBNull.Value引发的错误
以前写的带参数的window.setTimeout(参数可为对象)
NHibernate使用时,不能返回自己的异常的解决办法
最新IT新闻:
51.COM技术副总裁邵辉跳槽百度
Mono 2.0终于到来
百度任命李一男担任首席技术官
Google Knol 开始尝试有声版
12日电脑与人进行世纪对话 可思考机器或诞生
<
2007年3月
>
日
一
二
三
四
五
六
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
(5)
给我留言
查看留言
我参与的团队
O/R Mapping团队(0/208)
随笔分类
(99)
ASP.net(22)
(rss)
BAT(1)
(rss)
C#(20)
(rss)
C++(10)
(rss)
DHTML,JS(19)
(rss)
Java(2)
(rss)
TSQL(6)
(rss)
工作流(1)
(rss)
其它语言(5)
(rss)
生活(13)
(rss)
随笔档案
(71)
2008年5月 (1)
2008年3月 (1)
2007年12月 (2)
2007年11月 (2)
2007年9月 (1)
2007年8月 (5)
2007年7月 (9)
2007年6月 (6)
2007年5月 (5)
2007年4月 (5)
2007年3月 (8)
2006年11月 (2)
2006年9月 (1)
2006年8月 (4)
2006年7月 (4)
2006年6月 (2)
2006年5月 (2)
2006年4月 (7)
2006年3月 (2)
2005年11月 (2)
文章分类
(25)
ASP(2)
(rss)
ASP.NET(2)
(rss)
C#(3)
(rss)
CSS(1)
(rss)
DHTML,JS(7)
(rss)
MSSql(4)
(rss)
VC/C++(1)
(rss)
收藏(5)
(rss)
文章档案
(14)
2007年7月 (1)
2006年11月 (1)
2006年9月 (3)
2006年5月 (1)
2006年3月 (2)
2005年11月 (6)
收藏夹
(32)
C#(10)
(rss)
Database(2)
(rss)
javascript(3)
(rss)
Log4Net(3)
(rss)
Remoting(3)
(rss)
报表
(rss)
创业(4)
(rss)
工作流(4)
(rss)
网页(3)
(rss)
友情链接
asp.net源码下载站
很不错的asp.net源码下载站
DotNet新闻及文章中心
很不错的DotNet新闻及文章中心
Scott Guthrie's Blog on ASP.NET and .NET
Scott Guthrie's Blog on ASP.NET and .NET
scottgu
(rss)
宝玉的blog
(rss)
专注于web开发技术
创造机会的人是勇者;等待机会的人是愚者
EPZUZU.COM-创造机会的人是勇者;等待机会的人是愚者
海东的技术资料
(rss)
鸟食轩
(rss)
软件测试
(rss)
软件测试领域的交流平台
㊣点滴伊飏
(rss)
㊣点滴伊飏
紫雨轩
(rss)
破文
最新随笔
1. 在Excel中检验身份证号
2. 一个简单好用的JS标签(辞职当天帮同事写的东东)
3. 三行两列DIV布局之左固定宽度
4. XP SN
5. C与C#通讯加密之C语言DES的cbc pkcs7的实现(二)
6. C与C#通讯加密之C语言DES的cbc pkcs7的实现
7. 第一个asp.net的workflow例子
8. 从struct到byte[]之RawFormatter
9. 一个HTTP.二进制POST和HTTP指定长度接收的C++实现
10. 又一个网页下载者木马
积分与排名
积分 - 86853
排名 - 462
最新评论
1. re: 如此自动绑定数据到WebUI
你这样做很麻烦的,参考这个文章,利用发射绑定数据
--DavyJ
2. re: 图片服务器上图片的管理网站上传与前台显示
Stream stream = req.GetResponse().GetResponseStream();
好像不能检查目录是否存在,如果不存在,响应为产生异常哦!
--康哥
3. re: [原创]把程序放在相册中
算法有问题
--bookseas
4. re: 以前写的带参数的window.setTimeout(参数可为对象)
@宝儿爸
这个我还不知道,那如何改正呀?
--阿牛
5. re: [原]用三行代码实现对音量的控制,实现增大,减小,静音
@暗暗啊
在MFC C++程序中使用
--阿牛
阅读排行榜
1. 验证码的思考,你的验证码安全吗?(4187)
2. 图片服务器上图片的管理网站上传与前台显示(3819)
3. 移动的验证码安全问题告诉移动网站后......,1860意指一般人不会这样做.(3676)
4. 超级简单的Region对比识别验证码(3058)
5. [原创]利用HttpModuler实现WEB程序同一时间只让一个用户实例登陆(修改)(3016)
评论排行榜
1. 验证码的思考,你的验证码安全吗?(42)
2. 今天是公历6.19,我女儿的第一个生日,也是全国人民的大节日,端午节快乐(40)
3. 移动的验证码安全问题告诉移动网站后......,1860意指一般人不会这样做.(29)
4. 用控件的方式解决问题-在客户端关联WEB控件引用(28)
5. 发现移动太NB了,验证码图像路径直接包含验证码(25)
Powered by:
博客园
Copyright © 阿牛