分享
 
 
 

WinXPSP2禁用Xbm的原因及解决办法

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

大家所热切期盼的XP的SP2补丁正式版本已经放出,根据官方消息,中文版本的SP2也即将在随后的8月21日左右放出。

在SP2补丁包里,除了对bug的修复和功能的加强外,也对安全控制做了相应修改,指定了更严格的默认安全策略,以保证用户安全。

在更改后的安全策略中,因为基于安全因素的考虑,默认去掉了对 image/x-xbitmap 图片格式的支持(该图片的后缀名为Xbm)的支持。去掉支持一种危险的图片格式本身是无可厚非的,那么,为什么我要专门提到这个图片格式,它有什么特别之处,一般运用在什么场合呢? 说x-xbitmap格式的图片(以下简称为Xbm格式)的图片特殊,就在于它并不跟gif,jpg等图片格式一样,是一个真正的纯2进制图片格式,而是ascii码文件--换句话说,它是一个纯文本文件,在Windows系统下,系统浏览器将它翻译成图片来进行显示。

解析Xbm图形格式

Ok,让我们先来看看这种特殊图片的格式的例子:

新建一个文本文件,将以下内容复制过去

#define counter_width 48

#define counter_height 9

static unsigned charcounter_bits[]={ff,3c,7c,3c,70,3c,fe,7c,fe,7c,78,7c,ee,ee,ee,ee,7c,ee,e0,ee,60,ee,74,ee,70,fe,30,

fe,70,fe,38,ec,e0,ec,70,ec,1c,e0,ee,e0,70,e0,fe,7e,fe,7e,70,7e,fe,3c,7c,3c,70,3c}

然后,将此文本文件保存为名字为 test.Xbm的文件。

接下来,让我们看看如果在ie中打开它,会出现什么情形??(新开一个ie,然后将test.Xbm直接拖拽到它上面),哈,出现了如下图一样的情景,在浏览器中出来的,已经不是我们的文本,而是一个黑白的图片了!

(注意:你可以在它上面点击鼠标右键,"图片另存为"选项是高亮的,以证明这的确是一张图片。)

让我们看看上面那代码中,每一行的意义:

#define counter_width 48 这里定义了图片的宽度,一般都设置为8的整数倍,因为我们想显示的是6个数字,所以就设置成了8*6=48的宽度

#define counter_height 9 这里设置了图片的高度,可以任意设置,但是注意,这里的数字直接决定了下面的数组中,是用几组数来表示一个显示出的数字

static unsigned char counter_bits[]={7c,3c,7c,3c,70,3c,fe,7c,fe,7c,78,7c,ee,ee,ee,ee,7c,ee,e0,ee,60,ee,74,ee,70,fe,30,

fe,70,fe,38,ec,e0,ec,70,ec,1c,e0,ee,e0,70,e0,fe,7e,fe,7e,70,7e,fe,3c,7c,3c,70,3c}

在这里,是图片用来显示内容的十六进制的代码,在这里,是9*6=54个数字来表示,值得一提的是,由于在图片显示中,是显示完了一行后,再显示第2行,直到最后一行,因此更为准确的描述是6*9显示,每6个数表示一行(因为我们显示了6个数字),一共9行(我们的定义中,是采用的高度为9的数组)

正如static unsigned char英文意思为静态的,无符号的,烧焦的。它只能用来显示黑白两种颜色。二进制中的1将来用显示为黑色,0为白色。

因此,上面的7c、3c这样的数字,就是一个256位的2进制,其中的1表示黑色,0表示白色,由此绘制出每个数字的图形。

由于Xbm文件的性质决定,它只能显示黑/白两种颜色,而且以数组的方式来表现每个要显示的图形,注定了不能用它生成太复杂的图案。那么,这样的图片格式到底有什么用呢??当然有的,不少asp论坛/聊天室的登陆验证码,就是用这样的方法在asp中动态生成的。

SP2为什么会禁用Xbm图形格式

那么,象这样一个被广泛采用的生成验证代码的技术,为什么微软在XP的SP2升级包中又要禁止掉它呢??这就需要从Xbm的漏洞谈起了。

Microsoft Internet EXPlorer和Outlook EXPress在处理WEB页,HTML邮件,EMAIL附件中畸形Xbm图象文件会导致崩溃,问题存在于对Xbm文件中的内容缺少检查,MSIE按照图象规定的长度和宽度分配内存,攻击者可以提高超大的长度和宽度数值导致系统消耗内存或者访问冲突。

换句话说,如果构造一个长宽的尺寸特别大的Xbm文件,很容易导致Windows的内存耗尽,导致程序无响应或者死机。本身来说,这不算一个特别严重的漏洞,因为根据安全公告,无法造成溢出,不会存在太大的权限漏洞。但是由于XP的SP2强调安全性,因此将Xbm功能禁用了。从这点上可以看出,SP2对于安全的确比较重视,将有漏洞的功能基本上都补上或禁用了,作为网络管理员,我对微软的做法表示支持,因为操作系统默认设置的不安全,常常是造成非专业用户被攻击的首要因素。

解禁方法:

由此看出,以后我们访问某些采用生成Xbm作为验证代码的站点的时候,就相当不方便了,如果有必要,可以通过简单的操作注册表恢复我们需要的功能。

打开注册表,然后进到键值[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet EXPlorer\Security]将blockXbm的值改为00000000(dword,双字节),没有的话新建立一个就可以了。

之后重新启动机器,则Xbm格式的图片就可以看到了。

从SP2禁止Xbm的趋势看出,微软打算似乎已经开始打算放弃对Xbm格式的支持了。那么,作为程序编写者,有必要未雨绸缪,寻找其他生成验证码的途径。在php中,可以通过调用gd库等方式生成jpg/gif等图形格式的注册验证码,那么在asp中有其他的办法么?

事实上图片验证密码的关键是--不能在客户端留下图片的真实url,或可对应反推源地址的信息,因此asp可以采用以下2种方式实现支持SP2的图形验证码。

如果是购买的虚拟主机,那么可以采用将jpg/gif图片放到数据库,然后用session传值的方式,最后利用asp直接从数据库中输出图片,这方法的好处是不需要特别设置服务器端,坏处则是每次生成验证图片时都会需要与数据库连接,增加了开销。

如果是有管理员控制权限的用户,可以考虑采用第三方组件来实现。天缘个人推荐 ASP图象组件shotgraph ,它的免费版本对生成的图形有一定限制,不过已经足够用来制作验证码了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有