深入浏览器抓虫 陈三公子 1999年 第8期 09版   这期稿子见报时,陈三公子已经到浙江为舅舅做寿去了。陈三最喜欢去舅舅家,因为在那儿总可以找到厚厚的古代白话小说。好了,继续我们浏览器的抓虫行动吧!如果你发现了Bug,请发信到陈三的邮箱(chen3@126.com)中。陈三公子会在回家后的第一时间回复你。 #1 一个Bug的“儿子”——The Son Of Cuartango Hole   Bug:没有想到吧,Bug也会有“儿子”。根据微软发布的安全报告,Internet Explorer 4.01和Windows 98中存在Cuartango Hole的一个危险变种Bug。就像Cuartango Hole一样, The Son Of Cuartango Hole的存在,使我们在脚本语言中使用Document.execcommand就可以将文件名,贴入到文件上传控制对象中,然后调用一个过程,将文件传送出去了,从而绕开微软内置的HTML文件传送安全保护。由于脚本工具的程序段,内置于网页之中,除非查看网页源程序,否则无法发现这些操作。   补丁:微软发布了一个补丁(http://www.microsoft.com/ie/security/paste.htm),Windows 98用户可以用Windows Update功能修正该Bug。方法如下:在开始菜单中选择“产品升级”,出现提示信息时选择“Yes”,选择安装哪些补丁。该Bug对Internet Explorer 3.X和4.0无效。 #1  Outlook Express 自身的“邮件炸弹”   Bug:细心的朋友一定发现Outlook中有一个特殊的功能:限制附件大小。由于部分邮件服务器限制所发送邮件大小(一般为1MB),这就给传送大型文件带来了困难。Outlook的这个功能允许用户设定邮件大小上限。如果超过这个上限,就会自动将邮件拆分为多个邮件发送,当对方使用Outlook 收信时,软件会自动识别,并且将邮件合并为原始模样。有兴趣的朋友可以按照以下步骤试试: 1. 在“工具” 菜单上,单击“账号”。   2. 在“邮件”或“新闻”选项卡上,单击“属性”。   3. 在“高级”选项卡上,选中“拆分大于 X KB 的邮件”复选框,然后输入可发送文件大小的最大值。   这个功能也同时带来了麻烦,Outlook允许用户将上限设置到16K这么小。想象一下,如果我们要发送一个32MB的大邮件,Outlook Express就会在我们不知情的情况下发出1000到2000封左右的小邮件(这就变成了邮件炸弹)。这个功能让有发送邮件炸弹企图的人能够轻易达到他的目的。最可怕的问题是,小型的邮件很容易通过防火墙的封锁线。美国一家著名的ISP商指出,该问题的焦点在于拆分邮件的限制设得太低,因为该功能在另一款著名的E—mail软件中也存在,但是没有引起任何麻烦。   微软Outlook Express的产品经理Harry Goodwin说:“微软决定在后续版本中仍然保留该功能,但是,若将拆分邮件限制过小,会出现一个提示框警告用户将有不良后果”。   补丁:目前没有提供该问题的补丁。 #1  第一个 HTML 病毒   Bug:去年报道了第一个HTML 病毒,这次再详细地介绍一下它的机理。这个名为 WinScript.Rabbit 的HTML病毒本身是一个 VBScript程序段,能够自动寻找本地硬盘上的所有网页文件进行自我复制。在缺省的IE安全性设置,浏览者将会得到警告,但如果调低安全性设置下,病毒就会“无声无息”地进行自我复制。被该病毒感染的HTML文件头中,会对Script的自动引用,当用户打开该网页,病毒脚本就被执行。该病毒脚本头部有以下文本:   在感染结束后,病毒在浏览器状态栏中显示:   HTML.Prepend /1nternal   由于Netscape和Opera一直没有对VBScript进行支持,所以,该病毒不会在以上浏览器中发作。该病毒目前也没有其他破坏性行为,但是由于这个 Bug 的存在,不排除以后会有该类的恶性病毒。毕竟,将添加文本操作改为修改文本操作是非常简单的。   补丁:可以到 http://www.avp.com 下载修复这个病毒的工具。 #1  Netscape与Java Applet不兼容   Bug: Netscape承认Netscape Navigator 4.02和4.03 for Windows 95运行JAVA Applet时可能会导致系统死机。这个Bug在用户访问一个使用了插件的站点时发作,当你点击Mail-to连接打开Composer插件写信时,会有一个“Starting Java...”的信息出现,然后死机。   补丁:Netscape最初否认该Bug的存在,但是最后还是承认了,根据发言人的说法,这个问题已在Netscape 4.04中修复。这儿有个临时的解决方案:   1)在Windows 95的Netscape桌面快捷方式上单击右键选择:属性->快捷方式->目标   2)在其中的命令行“-start java”前面加入一个空格。   使用这种方法会使启动时间变得更长,同时你能够在LOGO上看到“Starting Java”字样。 #1  JavaScript算术错误   Bug:三公子第一次发现这个问题,是在一次试图直接在网页上制作一个高级计算器的时候,当所有的功能完成后,突然发现好多计算结果出现错误。最初我的想法是自己在程序设计上出现错误,当将整个计算器的外壳层层褪尽,直接做简单的乘除法也出错时,才最终确定是JavaScript语言的本身错误,所以,特地去找了相关资料。   据国外专业杂志报导,JavaScript的这个错误存在于目前所有支持JavaScript语言的浏览器中,包括Internet Explorer\\Opera和Netscape Communicator,其错误表现形式也有所不同。有兴趣的朋友可以简单的测试以下式子:81.66乘以15等于1224.9,这是小学水平的人就会的算术题,可是在Netscape For Windows 95中被计算成1224.8999999999999。该式子在Internet Explorer 3 for Windows 95中能够计算出正确的结果,但是在Internet Explorer 4中错误。 新崛起的浏览器Opera几乎没有出现过虫情警报,这次也在这儿翻了船,Opera 2.X可以成功地计算出81.66乘以15,但在266.66乘以15时却出现了错误。   现在看看微软和Netscape的反应,这两家最大的浏览器生产厂商一致宣布1224.8999999999999才是正确的答案。虽然1224.9这个答案是一个小学生就可以为你演算出来的结果,但是在浏览器中遵循的计算法则却不是我们平常所学习的计算法则,而是IEEE(美国电气及电子工程师学会)的 浮点数计算法则,按照这个法则,1224.8999999999999确实是一个正确的答案。按照这个几乎是目前电脑的事实标准提供的十进制和二进制的转换法则,81.66无法被正确地转换为二进制形式,所以最后的计算结果也就发生了错误。   根据Netscape和微软发言人所说,这个Bug所影响的可能不只是JavaScript,还包括了其他所有使用了IEEE-754标准的软硬件,其中可能会包括一些比较著名的程序开发环境。   补丁:目前没有提供该问题的补丁。 #1  浏览器框架欺骗问题   Bug:这是一个同时影响Netscape和Internet Explorer的超级虫子。这个Bug只能在网页设计者手中发作,它允许他们将自己的内容插入到另一个浏览窗口中去,即使另一个窗口中显示的是其他站点的内容。使用这种方法,网页设计者可以营造出一种假象,使用户误以为在访问一个安全的站点,而不自觉地泄露出自己的密码。一旦得到密码,网页设计者可以偷偷地将信息直送自己的邮箱中。   补丁:http://www.microsoft.com/windows/ie/security/spoof.asp。   虽然Netscape拒绝对该Bug是否影响Netscape作出回答,但是该Bug的发现者SecureXper Labs在以下地址(http://www.securexpert.com/framespoof/index.html)进行了示范,Netscape面对该Bug的攻击同样一败涂地。根据SecureXpert Labs的说法,任何一个支持Frames的浏览器都将受到威胁。Netscape未提供对该Bug的修复补丁以及任何的解决方案。