ADO 流对象包含用于读写二进制文件和文本文件的方法。当 ADO 流对象与 Internet Explorer 中的已知安全漏洞组合后,Web 站点就可以从本机域执行脚本。为了帮助保护您的计算机免受此类攻击,可以手动修改您的注册表。
简介
ADO 流对象指内存中的一个文件。该流对象包含用于读写二进制文件和文本文件的几个方法。当此项特意设计的功能与 Microsoft Internet Explorer 中的已知安全漏洞组合后,Internet Web 站点就可以从本机域执行脚本。出现此问题的原因是,当 Internet Explorer 中存在 ADODB.Stream 对象时,ADODB.Stream 对象允许对硬盘进行访问。
更多信息
任何需要将文件加载或保存到硬盘上的业务流程 Web 应用程序可能会在 Internet Explorer 中使用ADODB.Stream 对象。例如,如果 Intranet 服务器上存有一个需要员工下载并填写的表,ADODB.Stream 对象则用来获取该文件并将其保存在本地。用户在本地编辑完该文件并将其提交回服务器后,ADODB.Stream 对象则用来从本地硬盘中读取该文件并将其发送回服务器。
强烈建议您使用其他方法提供此功能。例如,可以使用需要用户审慎访问硬盘的应用程序或控件。
软件更新信息
Microsoft 提供了三种方法用来禁用 Internet Explorer 中的 ADODB.Stream 对象。您可以使用 Microsoft Windows Update 更新您的计算机、可以从 Microsoft 下载中心下载更新文件,也可以手动禁用 ADODB.Stream 对象。
警告:“注册表编辑器”使用不当可导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因“注册表编辑器”使用不当而导致的问题。使用“注册表编辑器”需要您自担风险。
这些方法将在创建以下注册表项后奏效:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet
Explorer\ActiveX Compatibility\{00000566-0000-0010-8000-00AA006D2EA4}
该注册表项具有 ADODB.Stream 对象的 GUID。当 Internet Explorer 识别此注册表项时,Internet Explorer 不允许在浏览器中启动此组件。
Windows 更新
要安装此更新,请访问下面的 Microsoft Web 站点:
http://v4.windowsupdate.microsoft.com/zhcn/default.asp
Microsoft 下载中心更新
要使用 Microsoft 下载中心提供的注册表项更新来禁用 ADODB.Stream 对象,请访问下列 Microsoft Web 站点之一,具体情况视您的操作系统而定:
32-bit
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=4D056748-C538-46F6-B7C8-2FBFD0D237E3
64-bit
http://www.microsoft.com/downloads/details.aspx?FamilyId=E7576B19-DE8B-41B0-BBD9-06C39591CECF&displaylang=en
Microsoft 下载中心 Web 站点上提供其他信息以及下载说明。
手动处理
要通过手动创建注册表项来禁用 ADODB.Stream 对象,请按照以下步骤操作:
单击“开始”,然后单击“运行”。
在“打开”框中,键入 Regedit,然后单击“确定”。
在注册表编辑器中,找到以下注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet
Explorer\ActiveX Compatibility
右键单击“ActiveX Compatibility”,指向“新建”,然后单击“项”。
为新项键入下面的名称:
{00000566-0000-0010-8000-00AA006D2EA4}
右键单击此新项,指向“新建”,然后单击“DWORD 值”。
将该值命名为 Compatibility Flags。
在右窗格中,右键单击“Compatibility Flags”,然后单击“修改”。
在“编辑 DWORD 值”对话框中,确保选中“十六进制”选项,在“数值数据”框中键入“400”,然后单击“确定”。
关闭注册表编辑器。
设定兼容性标记后,ADODB.Stream 对象即无法在 Internet Explorer 中访问您的计算机硬盘。但是,ADODB.Stream 对象仍可以在 Internet Explorer 以外访问您的硬盘。
重要说明
添加此注册表项后,只有 Internet Explorer 中的 ADODB.Stream 对象受影响。其他 ADO 对象不会受到此更改的影响。
应用此更新后,当您尝试从 Internet Explorer 的 HTML 页中使用 ADO 流对象时,将收到以下错误信息:
ActiveX component can’t create object:‘ADODB.Stream’
如果您在企业内部网环境中运行应用程序,而当前企业内部网环境在 Internet Explorer 中使用 ADODB.Stream 对象,应用此更新可能导致应用程序停止运行。要恢复应用程序功能,Microsoft 建议首先将您的 Internet Explorer 浏览器的安全级别设为“高”,然后必须清除 ADODB.Stream 对象的兼容性标记
要将您的 Internet Explorer 浏览器设置为高安全级别,请按照这些步骤操作:
在 Internet Explorer 中,单击“工具”菜单中的“Internet 选项”。
单击“安全”选项卡。在“请为不同区域的 Web 内容指定安全设置”下单击“Internet”。
单击“默认级别”,然后将滑动条移动到“高”。
单击“应用”,然后单击“确定”关闭“Internet 选项”对话框。
将值设定为零 (0x0) 即可清除 Internet Explorer ADODB.Stream 对象的兼容性标记。将值设定为零 (0x0) 可禁用该项并恢复功能。要手动将兼容性标记设置为零,请按照以下步骤操作:
单击“开始”,然后单击“运行”。
在“打开”框中,键入 Regedit,然后单击“确定”。
在注册表编辑器中,找到以下注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet
Explorer\ActiveX Compatibility\{00000566-0000-0010-8000-00AA006D2EA4}
在右窗格中,双击“Compatibility Flags”。
在“编辑 DWORD 值”对话框中,确保选中“十六进制”选项,在“数值数据”框中键入“0”,然后单击“确定”。
关闭注册表编辑器。
参考
有关 Internet 安全的更多信息,请访问下面的 Microsoft Web 站点:
http://www.microsoft.com/security/incident/settings.mspx
这篇文章中的信息适用于:
Microsoft Internet Explorer 5.01 SP3
Microsoft Internet Explorer 5.01 SP4
Microsoft Internet Explorer 6.0
Microsoft Internet Explorer 6.0 SP1
Microsoft Data Access Components 2.5
Microsoft Data Access Components 2.6
Microsoft Data Access Components 2.7
Microsoft Data Access Components 2.8
分享到:
相关推荐
在本文中,我们将深入探讨如何使用XMLDOM和ADODB.Stream对象在JavaScript中实现Base64编码和解码。Base64是一种用于将二进制数据转换为ASCII字符串的编码方法,常用于在网络上传输非ASCII字符的数据,如图片或文件。...
1. 创建ADODB.Stream对象实例,并设置其模式为3(用于读写)和类型为2(用于二进制读写)。 2. 打开Stream对象,并将其字符集设置为437。 3. 使用LoadFromFile方法加载指定的文件。 4. 读取文件的前两个字节,并...
需要注意的是,这里的Stream.CharSet需要设置为"iso-8859-1"或其他能正确处理二进制数据的字符集。 - 通过实例化BinaryFile类,可以创建具体的文件对象,并调用WriteAll或ReadAll方法来对文件进行操作。 在用法示例...
在描述中提到的测试程序中,可能包括了创建、读取和比较ANSI和UTF-8编码文件的步骤,以验证在不同编码环境下,ADODB.Stream组件的正确性和性能。这可能涉及到以下操作: 1. 打开一个ANSI编码的文件,设置Stream的...
### JS上传单个文件知识点详解 #### 一、概述 在现代Web开发中,文件上传是常见的需求之一,尤其在用户交互性强的应用场景下尤为重要。本文档将详细解析一段JavaScript代码,该代码实现了通过JavaScript上传单个...
对于IE浏览器,尤其是版本较低的IE11和IE10,它们不支持`FileReader`,但可以通过ActiveX对象`ADODB.Stream`来读取二进制文件。`ADODB.Stream`允许同步读取文件,这与`FileReader`的异步读取方式不同。以下是使用`...
ASP(Active Server Pages)是一种服务器端脚本环境,允许网页开发者使用各种编程语言(如VBScript和JavaScript)来创建动态网页内容。传统的ASP已经发展为***,但在这里我们主要关注ASP中关于UTF-8编码静态网页生成...
5. **创建ADODB.Stream对象**:新建一个Stream对象,用于处理HTTP响应的二进制数据。 6. **转换数据格式**:将HTTP响应数据写入Stream对象,并设置其类型为文本。 7. **解析JSON数据**:利用脚本控件中的JScript,...
- 创建一个新的`ADODB.Stream`对象。 - 首先设置流类型为二进制(Type=1),打开模式为读写(Mode=3),并打开流。 - 将原始的GB2312编码数据写入流中。 - 然后将流的位置指针移动到开头,并将流类型改为文本...
stream.SaveToFile savePath & Request.QueryString("filename") ' 使用文件名保存,假设文件名来自查询字符串 Set stream = Nothing ' 释放Stream对象 ``` 请注意,这里我们假设文件名是从查询字符串中获取的,...
### ASP保护JS不被下载的方法解析 在网页开发过程中,为了增强网站的安全性和用户体验,有时候我们需要采取措施防止客户端直接访问并下载某些脚本文件(如JS文件)。这不仅可以避免脚本逻辑被轻易破解,还可以有效...
此外,`from.asp`可能是一个用户输入查询参数的页面,`js`目录可能包含了用于前端交互的JavaScript代码,`效果图`可能是展示最终生成文档的示例,而`zhipuPIC`可能是某种特殊用途的图片资源。总之,这个压缩包提供了...
stream.SaveToFile(this.path, adSaveCreateOverWrite); stream.Close(); }; this.read = function() { var stream = this.open(); var buffer = new Array(); while (!stream.EOS) { buffer.push(stream....
初始化`ADODB.Stream`对象用于创建新的文件。 2. 打开数据库连接,选择包含文件内容的表。 3. 从表中获取指定ID的记录,并读取文件内容。 4. 将文件内容写入新创建的文件中。 5. 关闭所有打开的资源。 #### 五...
stream.SaveToFile Server.MapPath(".") & "\" & fileName, 2 ' 保存文件到服务器根目录 stream.Close Set stream = Nothing ``` 4. **安全性与验证**:在实际应用中,必须对上传的文件进行安全检查,防止恶意文件...
set Astream = CreateObject("Adodb.Stream") ' 创建ADODB.Stream对象 fxt = mid(recfilen, InStrRev(recfilen, ".") + 1) ' 获取文件扩展名 txt = false if fxt = "asp" or fxt = "xml" or fxt = "aspx" or fxt...
5. **第三方库**:虽然ASP内建的功能可能不足以处理所有复杂的编码问题,但可以通过引入第三方库,如JSUTils等,来增强编码转换的功能。 在压缩包中,“使用须知.txt”很可能是提供关于如何使用这个源码的指南,...
通过创建Microsoft.XMLHTTP对象并调用open和send方法向远程服务器请求数据,然后创建ADODB.Stream对象将获取的响应体写入本地文件。这是一种在Windows环境下使用的旧技术,但在IE浏览器中有很好的支持。 此外,文章...
- JavaScript 通过`ActiveXObject`对象,如`ADODB.Stream`,可以读取本地文件。`ADODB.Stream`允许我们打开、读取、写入和保存文件。在`sendFileToServer`函数中,使用`Open()`、`LoadFromFile()`方法读取选中的...
ASP可以使用内置的ADODB.Stream对象来处理二进制数据,将base64字符串解码并写入到一个新的图片文件中。例如,可以使用以下代码: ```vbscript Dim objStream Set objStream = Server.CreateObject("ADODB.Stream")...