Web系统安全和渗透性测试基础(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-12 15:17:18

点击下载

作者:中国信息安全测评中心,林佳毅

出版社:航空工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Web系统安全和渗透性测试基础

Web系统安全和渗透性测试基础试读:

第一部分 Web系统安全基础

第1章 Web系统基础

1.1 Web概述

WWW(World Wide Web)简称Web,中文译名为万维网,环球信息网等。Web是由欧洲核物理研究中心(ERN)研制,其目的是为全球范围的科学家利用互联网进行通信、信息交流和信息查询提供便利。

Web是建立在客户机/服务器模型之上的。Web是以超文本标注语言(Hypertext Markup Language,HTML)与超文本传输协议(Hypertext Transfer Protocol,HTTP)为基础,能够提供面向互联网服务的、一致的用户界面信息浏览系统。其中Web服务器采用超文本链路来链接信息页,这些信息页既可放置在同一主机上,也可放置在不同地理位置的主机上;本链路由统一资源定位器(URL)维持,Web客户端软件(即Web浏览器)负责信息显示与向服务器发送请求。

互联网采用超文本和超媒体的信息组织方式,将信息的链接扩展到整个互联网上。目前,用户利用Web不仅能访问到Web服务器的信息,而且可以访问到FTP、Telnet等网络服务。因此,它已经成为互联网上应用最广和最有前途的访问工具,并在商业范围内发挥着越来越重要的作用。

Web客户程序在互联网上被称为Web浏览器(Browser),它是用来浏览互联网上Web主页的软件。目前,最流行的浏览器软件主要有IE和Firefox等。

Web页面与Web浏览器如图1-1所示。

Web浏览器提供界面友好的信息查询接口,用户只需提出查询要求(输入请求的网址),如何完成查询则由Web系统自动完成。因此Web为用户带来的是世界范围的超文本服务。用户只要操纵鼠标键盘,就可以通过互联网从全世界调来所需的文本、图像、声音等信息。Web使得内部非常复杂的互联网使用起来异常简单。

Web浏览器不仅为用户打开了寻找互联网上内容丰富、形式多样的主页信息资源的便捷途径,而且提供了Usenet新闻组、电子邮件与FTP协议等功能强大的通信手段。

万维网联盟(World Wide Web Consortium,W3C),又称W3C理事会。W3C是Web领域最有影响力的组织,建立了各种Web标准。W3C于1994年10月在麻省理工学院计算机科学实验室成立。建立者是万维网的发明者蒂姆·伯纳斯·李。图1-1 Web页面与Web浏览器1.1.1 URL

统一资源定位符(Uniform Resource Locator,URL)是用于完整地描述互联网上网页和其他资源地址的一种标志方法。

互联网上的每一个网页都具有一个唯一的名称标志,通常称之为URL地址,这种地址可以是本地磁盘,也可以是局域网上的某一台计算机,更多的是互联网上的站点。简单地说,URL就是Web地址,俗称“网址”。

URL方案集,包含如何访问互联网上的资源的明确指令。URL是统一的,因为它们采用相同的基本语法,无论寻址哪种特定类型的资源(网页、新闻组)或描述通过哪种机制获取该资源。

对于互联网服务器上的目标文件,可以使用“统一资源定位符(URL)”地址(该地址以“http://”开始)。Web服务器使用“超文本传输协议(HTTP)”,一种“幕后”的互联网信息传输协议。例如,http://www.itsec.gov.cn/ 是中国信息安全测评中心网站的URL 地址。

URL的一般格式为(带[]的部分为可选项):protocol://hostname[:port]/path/[;parameters][?query]#fragment

例如,http://www.imailtone.com:80/WebApplication1/WebForm1.aspx?name=tom&age=20#resume1.1.2 超文本和超媒体

①超文本(hypertext)

一种全局性的信息结构,它将文档中的不同部分通过关键字建立链接,使信息得以用交互方式搜索。它是超级文本的简称。

②超媒体(hypermedia)

超媒体是超文本(hypertext)和多媒体在信息浏览环境下的结合,它是超级媒体的简称。用户不仅能从一个文本跳到另一个文本,而且可以激活一段声音、显示一个图形,甚至可以播放一段动画。

互联网采用超文本和超媒体的信息组织方式,将信息的链接扩展到整个互联网上。Web就是一种超文本信息系统,Web的一个主要的概念就是超文本链接,它使得文本不再像一本书一样是固定的,线性的。而是可以从一个位置跳到另外的位置。用户可以从中获取更多的信息,可以转到别的主题上。想要了解某一个主题的内容,只要在这个主题上点一下,就可以跳转到包含这一主题的文档上。正是这种多链接性才把它称为Web。

1.2 Web系统的结构和组成

1.2.1 Web系统基本架构

Web从总体上看,可以分为两部分,即服务器和客户端。两者通过协议进行通信,传递Web上的各种信息。

从系统角度来看Web系统中的服务器和客户端,可以分成三个层面:应用层、支撑技术和中间件以及位于底层的计算资源。各部分相互之间关系如图1-2所示。图1-2 Web系统基本架构1.2.2 Web工作原理

当用户想进入互联网上一个网页或者其他网络资源的时候,通常首先要在浏览器上键入想访问网页的统一资源定位符(URL),或者通过超链接方式链接到指定网页或网络资源。这之后的工作首先是URL的服务器名部分,被分布于全球的因特网数据库解析,并根据解析结果决定进入哪一个IP地址。接下来的步骤是向在那个IP地址工作的服务器发送一个HTTP请求。在通常情况下,HTML文本、图片和构成该网页的一切其他文件很快会被逐一请求并发送回用户。

Web浏览器接下来的工作是把HTML、CSS和其他接收到的文件所描述的内容,加上图像、链接和其他所必需的资源显示给用户,这些构成了所看到的“网页”。1.2.3 Web服务器

Web服务器也称为WWW(World Wide Web)服务器,主要功能是提供网上信息浏览服务。主要组成包括:

①应用层使用HTTP协议;

②HTML文档格式;

③浏览器统一资源定位符(URL)。

Web采用的是客户/服务器结构,其作用是整理和储存各种Web资源,并响应客户端软件的请求,把客户所需的资源传送到Windows、Windows NT、UNIX 或 Linux 等平台上。

通俗来讲,Web服务器传送页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用的方法。确切一点可以说,Web服务器专门处理HTTP请求,应用程序服务器是通过很多协议来为应用程序提供业务逻辑。服务器主要的工作流程如下:

①接受请求;

②请求的合法性检查,包括安全性屏蔽;

③针对请求获取并制作数据,包括Java脚本和程序、CGI脚本和程序、为文件设置适当的MIME类型来对数据进行前期处理和后期处理;

④把信息发送给提出请求的客户机。

Web服务器可以解析HTTP协议。当Web服务器接收到一个HTTP请求时,会返回一个HTTP响应,例如,送回一个HTML页面。为了处理一个请求,Web服务器可以响应一个静态页面或图片进行页面跳转,或者把动态响应的内容委托给一些其他的程序例如,CGI脚本,JSP(JavaServer Pages)脚本,Servlets,ASP(Active Server Pages)脚本,服务器端JavaScript,或者一些其他的服务器端技术。无论它们的目的如何,这些服务器端的程序通常产生一个HTML的响应来让浏览器可以浏览。

Web服务器的代理模型非常简单。当一个请求被送到Web服务器里时,它只单纯地把请求传递给可以很好地处理请求的程序。Web服务器仅仅提供一个可以执行服务器端程序和返回(程序所产生的)响应的环境而不会超出职能范围。服务器端程序通常具有事务处理、数据库连接和消息等功能。

虽然Web服务器不支持事务处理或数据库连接,但它可以配置各种策略来实现容错性和可扩展性,如负载平衡、缓存等。

在UNIX和Linux平台下使用最广泛的免费HTTP服务器是W3C、NCSA和APACHE服务器,而Windows平台NT/2000/2003使用IIS的Web服务器。在选择使用Web服务器时应考虑的本身特性因素有:性能、安全性、日志和统计、虚拟主机、代理服务器、缓冲服务和集成应用程序等,下面介绍几种常用的Web服务器。(1)Apache

Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。它源于NCSA httpd服务器,当NCSA WWW服务器项目停止后,那些使用NCSA WWW服务器的人们开始交换用于此服务器的补丁,这也是Apache名称的由来(pache——补丁)。世界上很多著名的网站都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的UNIX、Windows、Linux系统平台上)以及它的可移植性等方面。(2)微软IIS

微软的Web服务器产品是Internet Information Server(IIS),IIS是允许在公共Intranet或互联网上发布信息的Web服务器。IIS是目前最流行的Web服务器产品之一,很多著名的网站都是建立在IIS的平台上。IIS提供了一个图形界面的管理工具,称为互联网服务管理器,可用于监视配置和控制互联网服务。

IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供Intranet Server API(ISAPI)作为扩展Web服务器功能的编程接口;同时,它还提供一个互联网数据库连接器,可以实现对数据库的查询和更新。(3)Tomcat

Tomcat是一个开放源代码、运行Servlet和JSP Web应用软件的基于Java的Web应用软件容器。Tomcat Server是根据Servlet和JSP规范执行的,因此可以说Tomcat Server也实行了Apache-Jakarta规范且比绝大多数商业应用软件服务器要好。

Tomcat是Java Servlet 2.2和JavaServer Pages 1.1技术的标准实现,是基于Apache许可证下开发的自由软件。Tomcat是完全重写的Servlet API 2.2和JSP 1.1兼容的Servlet/JSP容器。Tomcat使用了JServ的一些代码,特别是Apache服务适配器。随着Catalina Servlet引擎的出现,Tomcat第4版号的性能得到提升,使得它成为一个值得考虑的Servlet/JSP容器,因此目前许多Web服务器都是采用Tomcat。(4)IBM WebSphere

WebSphere Application Server 是一种功能完善、开放的Web应用程序服务器,是IBM电子商务计划的核心部分,它是基于 Java 的应用环境,用于建立、部署和管理互联网及Intranet Web 应用程序。这一整套产品进行了扩展,以适应 Web 应用程序服务器的需要,范围从简单到高级直到企业级。

WebSphere 针对以 Web 为中心的开发人员,他们都是在基本 HTTP服务器和 CGI 编程技术上成长起来的。IBM 将提供 WebSphere 产品系列,通过提供综合资源、可重复使用的组件、功能强大并易于使用的工具以及支持 HTTP 和 IIOP 通信环境,来帮助这些用户从简单的 Web 应用程序转移到电子商务世界。(5)BEA WebLogic

BEA WebLogic服务器是一种多功能、基于标准的Web应用服务器,为企业构建自己的应用提供了坚实的基础。各种应用开发、部署关键性的任务,无论是集成各种系统和数据库,还是提交服务、跨互联网协作,起始点都是 BEA WebLogic服务器。由于它具有全面的功能、对开放标准的遵从性、多层架构、支持基于组件的开发等优点,基于互联网的企业都选择它来开发、部署最佳的应用。

BEA WebLogic服务器在使应用服务器成为企业应用架构的基础方面继续处于领先地位。BEA WebLogic服务器为构建集成化的企业级应用提供了稳固的基础,它们以互联网的容量和速度,在连网的企业之间共享信息、提交服务,实现协作自动化。1.2.4 Web浏览器

Web浏览器是指可以显示Web服务器或者文件系统的HTML文件内容,并让用户与这些文件交互的一种软件。网页浏览器主要通过HTTP协议与网页服务器交互并获取网页,这些网页由URL指定,文件格式通常为HTML,并由MIME在HTTP协议中指明。一个网页中可以包括多个文档,每个文档都是分别从服务器获取的。大部分的浏览器本身支持除了HTML之外的广泛的格式,如JPEG、PNG、GIF等图像格式,并且能够扩展支持众多的插件(plug-ins)。另外,许多浏览器还支持其他的URL类型及其相应的协议,如FTP、Gopher、HTTPS(HTTP协议的加密版本)。HTTP内容类型和URL协议规范允许网页设计者在网页中嵌入图像、动画、视频、声频、流媒体等。

在Web中,客户机的任务是:

①帮助用户制作一个请求(通常在单击某个链接点时启动);

②将用户的请求发送给某个服务器;

③通过对直接图像适当解码,呈交HTML文档和传递各种文件给相应的“查看器”,把请求所得的结果报告给用户。1.2.5 Web技术概览

这里通过划分不同的层次和领域,将Web领域的主要技术分类列出(见表1-1)。表1-1 Web技术分类

1.3 Web系统及相关技术介绍

1.3.1 HTTP

超文本传输协议(Hypertext Transfer Protocol,HTTP)是互联网上应用最为广泛的一种网络传输协议。所有的Web文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

HTTP的发展是万维网协会和互联网工作小组合作的结果,在一系列的RFC发布中确定了最终版本,其中最著名的是RFC 2616。在RFC 2616中定义了HTTP1.1这个今天普遍使用的版本。以下的介绍围绕HTTP1.1版本进行。1.3.1.1 HTTP协议是什么

当我们浏览一个网站的时候,只要在浏览器的地址栏里输入网站的地址就可以了,例如,www.baidu.com,但是在浏览器的地址栏里面出现的却是:http://www.baidu.com ,为什么会多出一个“http”?

我们在浏览器的地址栏里输入的网站地址叫URL。就像每家每户都有一个门牌地址一样,每个网页也都有一个互联网地址。当在浏览器的地址栏中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成网页。因此,在我们认识HTTP之前,有必要先弄清楚URL的组成,例如,http://www.baidu.com/china/index.htm。它的含义如下:

①http://:代表超文本传输协议,通知baidu.com服务器显示Web页,通常不用输入;

②www:代表一个Web(万维网)服务器;

③baidu.com/:这是装有网页的服务器的域名,或站点服务器的名称;

④china/:为该服务器上的子目录,就像我们的文件夹;

⑤index.htm:是文件夹中的一个HTML文件(网页)。

我们知道,互联网的基本协议是TCP/IP协议,然而在TCP/IP模型最上层的是应用层,它包含所有的高层协议。高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS和HTTP协议等。

HTTP协议是用于从Web服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。这就是为什么在浏览器中看到的网页地址都是以http://开头的原因。

HTTP是一个用于在客户端和服务器间请求和应答的协议。一个HTTP的客户端,例如一个Web浏览器,通过建立一个到远程主机特殊端口(默认端口为80)的连接,初始化一个请求。一个HTTP服务器通过监听特殊端口等待客户端发送一个请求序列,就像“GET / HTTP/1.1”(用来请求网页服务器的默认页面),有选择地接收像E-mail一样的MIME消息,此消息中包含了大量用来描述请求各个方面的信息头序列,响应一个选择的保留数据主体。接收到一个请求序列后(如果要的话,还有消息),服务器会发回一个应答消息,诸如“200 OK”,同时发回一个它自己的消息,此消息的主体可能是被请求的文件、错误消息或者其他的一些信息。

HTTP不同于其他基于TCP的协议,诸如FTP。在HTTP中,一旦一个特殊的请求(或者请求的相关序列)完成,连接通常被中断。这个设计使得对于当前页面有规则连接到另一台服务器页面的万维网来说,HTTP是完美的。当持久连接的缺乏成为保持用户状态的必须选择的方法时,对网页设计者来说,会偶然产生一些问题。而大部分这些方法包括了对cookie的使用。1.3.1.2 HTTP工作原理

了解URL的构成之后,HTTP又是如何工作的?接下来讨论这个问题。

一次HTTP操作称为一个事务,其工作过程可分为4步:

①首先客户机与服务器需要建立连接:只要单击某个超级链接,HTTP的工作就开始了;

②建立连接后,客户机发送一个请求给服务器,请求方式的格式为:URL、协议版本号,后边是MIME信息,包括请求修饰符、客户机信息和可能的内容;

③服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息,包括服务器信息、实体信息和可能的内容;

④客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

许多HTTP通信是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理和服务器之间通过一个单独的连接来完成。在互联网上,HTTP通信通常发生在TCP/IP连接之上。缺省端口是TCP 80,但其他的端口也是可用的。但这并不预示着HTTP协议在互联网或其他网络的其他协议之上才能完成。HTTP只预示着一个可靠的传输。

HTTP的安全版本称为HTTPS,HTTPS能够对HTTP协议支持任何的加密算法,只要此加密算法能被页面双方所理解。1.3.1.3 HTTP协议结构

HTTP是超文本传输协议的缩写,它用于传送Web方式的数据,关于HTTP协议的详细内容请参考RFC 2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。

通常,HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行、一个或者多个头域、一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头、请求头、响应头和实体头4个部分。每个头域由一个域名、冒号(:)和域值三部分组成。域名与大小写无关,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。

HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应构成。请求报文格式如下:

请求行-通用信息头-请求头-实体头-报文主体

请求行以方法字段开始,后面分别是URL字段和HTTP协议版本字段,并以CRLF结尾。SP是分隔符。除了在最后的CRLF序列中CF和LF是必需的之外,其他都可以不要。有关通用信息头、请求头和实体头方面的具体内容可以参照相关文件。

响应报文格式如下:

状态行-通用信息头-响应头-实体头-报文主体

状态码元由3位数字组成,表示请求是否被理解或被满足。原因分析是对原文的状态码做简短的描述,状态码用来支持自动操作,而原因分析用来供用户使用。客户机无需用来检查或显示语法。有关通用信息头、响应头和实体头方面的具体内容可以参照相关文件。

下面给出一个典型的请求消息:

GET http://download.microtool.de:80/somedata.exe

Host:download.microtool.de

Accept:*/*

Pragma:no-cache

Cache-Control:no-cache

Referer:http:// download.microtool.de/

User-Agent:Mozilla/4.04[en](Win95;I;Nav)

Range:bytes=554554-

相对应的典型的响应消息:

HTTP/1.0 200OK

Date:Mon,31Dec200104:25:57GMT

Server:Apache/1.3.14(Unix)

Content-type:text/html

Last-modified:Tue,17Apr200106:46:28GMT

Etag:"a030f020ac7c01:1e9f"

Content-length:39725426

Content-range:bytes554554-40279979/40279980

在HTTP1.0中,客户端发送一个请求至服务器,服务器发送一个应答至客户端。之后,连接将被释放。另一方面,HTTP1.1支持持久连接。这使得客户端可以发送请求并且接收应答,然后迅速地发送另一个请求和接收另一个应答。因为多个额外的请求,TCP连接并没有被释放,而每个请求中关于TCP的负载相对较少。同时,在得到上一个请求的应答之前发送多个请求(通常是2个)也成为可能。该技术被称为“流水线”。(1)MIME

当客户端和服务器交换文件的时候,它们通常需要了解正在传送的文件类型,这是通过MIME类型的使用来实现的。多用途的网际邮件扩充协议(Multipurpose Internet Mail Extensions,MIME)是一组允许多媒体文档在不同计算机系统之间传送的规则。MIME最初专为扩展原始的互联网电子邮件协议设计,但也被HTTP使用,现在MIME已经成为了HTTP协议标准的一个部分。MIME提供了互联网上7种不同类型文件的传送方式:声频、视频、图片、应用软件、消息、多段文件和文本。MIME还使用子类型来进一步描述数据,例如网页的MIME类型为text/html,GIF和JPEG图片的MIME类型分别为image/gif和image/jpeg。

网页服务器在将一个文件传送给网页浏览器之前会先确定它的MIME类型,MIME类型同文件一起传送,网页浏览器通过MIME类型决定文件的显示方式。

MIME对于邮件系统的扩展是巨大的,在MIME出现以前,信件内容如果要包括声音和动画,就必须把它变为ASCII码或把二进制的信息变成可以传送的编码标准,而接收方必须经过解码才可以获得声音和图画信息。而引入MIME之后,服务器会将它们发送的多媒体数据的类型告诉浏览器,而通知手段就是说明该多媒体数据的MIME类型,从而让浏览器知道接收到的信息哪些是MP3文件,哪些是Shockwave文件等。服务器将MIME标志符放入传送的数据中来告诉浏览器使用哪种插件读取相关文件。这样浏览器就能够读取并向用户展示出丰富多彩的各种文件。

MIME能够支持非ASCII字符、二进制格式附件等多种格式的邮件消息。MIME规定了用于表示各种各样的数据类型的符号化方法。(2)HTTPS

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是

SSL,因此加密的详细内容请参考SSL。

HTTPS是一个URI scheme(抽象标志符体系),句法类同http:体系,用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由Netscape公司进行,提供了身份验证与加密通信方法,现在它被广泛用于Web上安全敏感的通信,例如,交易支付方面。

它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话,用户可以确认发送者是谁。

也就是说,HTTPS的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。1.3.2 cookie

cookie有时也用其复数形式cookies,指某些网站为了辨别用户身份而储存在用户本地客户端上的数据(通常经过加密),定义于RFC 2109。它是Netscape公司的前雇员Lou Montulli在1993年3月发明的。

服务器可以利用cookie包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。cookie最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是cookie的功用。另一个重要应用场合是“购物车”之类的处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入cookie,以便在最后付款时提取信息。

cookie可以保持登录信息到用户下次与服务器会话。换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就已经登录了(当然,不排除用户手工删除cookie)。而有一些cookie在用户退出会话的时候就被删除了,这样可以有效保护个人隐私。(1)隐私,安全和广告

cookie在某种程度上说已经严重危及用户的隐私和安全。其中的一种方法是:一些公司的高层人员为了某种目的(如市场调研)而访问了从未去过的网站(通过搜索引擎查到的),而这些网站包含了一种叫做网页臭虫的图片,该图片透明,且只有一个像素大小(以便隐藏),它们的作用是将所有访问过此页面的计算机写入cookie。而后,电子商务网站将读取这些cookie信息,并寻找写入这些cookie的网站,随即发送包含了针对这个网站的相关产品广告的垃圾邮件给这些高级人员。

因为更具有针对性,使得这套系统行之有效,收到邮件的客户或多或少表现出对产品的兴趣。这些站点一旦写入cookie并使其运作,就可以从电子商务网站那里获得报酬,以维系网站的生存。

鉴于隐藏的危害性,瑞典已经通过对cookie立法,要求利用cookie的网站必须说明cookie的属性,并且指导用户如何禁用cookie。(2)cookie的安全问题

尽管cookie没有病毒那么危险,但它仍包含了一些敏感信息:用户名、计算机名、使用的浏览器和曾经访问的网站。用户不希望这些内容泄露出去,尤其是当其中还包含有私人信息的时候。

①cookie欺骗

cookie记录着用户的账号ID、密码之类的信息,如果在网上传递,通常使用MD5方法加密。这样经过加密处理后的信息,即使被网络上一些别有用心的人截获,也看不懂,因为他看到的只是一些无意义的字母和数字。然而,现在遇到的问题是,截获cookie的人不需要知道这些字符串的含义,他们只要把别人的cookie向服务器提交,并且能够通过验证,他们就可以冒充受害人的身份,登录网站。这种方法叫做cookie欺骗。cookie欺骗实现的前提条件是服务器的验证程序存在漏洞,并且冒充者要获得被冒充人的cookie信息。目前网站的验证程序要排除所有非法登录是非常困难的,例如,编写验证程序使用的语言可能存在漏洞。而且要获得别人cookie是很容易的,用支持cookie的语言编写一小段代码就可以实现,只要把这段代码放到网络里,那么所有人的cookie都能够被收集。如果一个论坛允许HTML代码或者允许使用Flash标签就可以利用这些技术收集cookie的代码放到论坛里,然后给帖子取一个吸引人的主题,写上有趣的内容,很快就可以收集到大量的cookie。在论坛上,有许多人的密码就是被这种方法盗去的。至于如何防范,目前还没有特别有效的方法,我们也只能使用通常的防护方法,不要在论坛里使用重要的密码,也不要使用IE自动保存密码的功能以及尽量不登录不了解底细的网站。

②Flash的代码隐患

Flash中有一个getURL()函数,Flash可以利用这个函数自动打开指定的网页。因此它可能把用户引向一个包含恶意代码的网站。例如,当用户在自己电脑上欣赏精美的Flash动画时,动画帧里的代码可能已经悄悄地连上网,并打开了一个极小的包含有特殊代码的页面。这个页面可以收集你的cookie也可以做一些其他的事情,如在用户的机器上种木马甚至格式化硬盘等。对于Flash的这种行为,网站是无法禁止的,因为这是Flash文件的内部行为。我们所能做到的,如果是在本地浏览尽量打开防火墙,如果防火墙提示的向外发送的数据包并不为人知悉,最好禁止。如果是在互联网上,最好找一些知名的大网站。1.3.3 HTML

HTML即超文本标记语言或超文本链接标示语言,是目前网络上应用最为广泛的语言,也是构成网页文档的主要语言。设计HTML语言的目的是为了能把存放在一台电脑中的文本或图形与另一台电脑中的文本或图形方便地联系在一起,形成有机的整体,人们不用考虑具体信息是在当前电脑上还是在网络的其他电脑上,只需使用鼠标在某一文档中点击一个图标,互联网就会马上转到与此图标相关的内容上去,而这些信息可能存放在网络的另一台电脑中。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。HTML的结构包括头部(Head)、主体(Body)两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容。

最早由蒂姆·伯纳斯·李给出原始定义,由IETF用简化的SGML(标准通用置标语言)语法进行进一步发展的HTML,后来成为国际标准,由万维网联盟(W3C)维护。

包含HTML内容的文件最常用的扩展名是.html,但是像DOS这样的旧操作系统限制扩展名为最多3个字符,所以.htm扩展名也被使用。虽然现在使用比较少一些了,但是.htm扩展名仍旧普遍被支持。编者可以用任何文本编辑器或所见即所得的HTML编辑器来编辑HTML文件。

早期的HTML语法被定义成较松散的规则,以利于不熟悉网络出版的人采用。网页浏览器接受了这个现实,并且可以显示语法不严格的网页。随着时间的流逝,官方标准渐渐趋于严格的语法,但是浏览器继续显示一些远称不上合乎标准的HTML。使用XML的严格规则的XHTML(可扩展超文本置标语言)是W3C计划中的HTML的接替者。虽然很多人认为它已经成为当前的HTML标准,但是它实际上是一个独立的、与HTML平行发展的标准。W3C目前的建议是使用XHTML 1.1、XHTML 1.0或者HTML 4.01进行网络出版。

另外,HTML是网络的通用语言,一种简单、通用的全置标记语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上的其他人浏览,无论使用的是什么类型的电脑或浏览器。

HTML标签通常是英文词汇的全称(如块引用:blockquote)或缩略语(如“p”代表Paragraph),但它们与一般文本有区别,因为它们放在单书名号里。故Paragragh标签是

,块引用标签是

。有些标签说明页面如何被格式化(如开始一个新段落),其他则说明这些词如何显示(使文字变粗)还有一些其他标签提供在页面上不显示的信息,如标题。

关于标签,需要记住的是,它们是成双出现的。每当使用一个标签,如

,则必须以另一个标签
将它关闭。注意blockquote前的斜杠,那就是关闭标签与打开标签的区别。但是也有一些标签例外。例如,标签就不需要。

基本HTML页面以标签开始,以结束。在它们之间,整个页面有2部分——标题和正文。

标题词夹在和标签之间,这个词语在打开页面时出现在屏幕底部最小化的窗口。正文则夹在和之间,即所有页面的内容所在。页面上显示的任何东西都包含在这2个标签之中。(1)HTML特点

HTML文档制作不是很复杂,但功能强大,支持不同数据格式的文件镶入,这也是Web盛行的原因之一,其主要特点如下:

①简易性:HTML版本升级采用超集方式,从而更加灵活方便;

②可扩展性:HTML语言的广泛应用带来了加强功能,增加标志符等要求,HTML采取子类元素的方式,为系统扩展带来保证;

③平台无关性:虽然PC机大行其道,但使用MAC等其他机器的大有人在,HTML可以使用在广泛的平台上,这也是Web盛行的另一个原因。

HTML实际上是文本,它需要浏览器的解释,HTML的编辑器大体可以分为3种:

①基本编辑软件:使用Windows自带的记事本或写字版都可以编写,当然,如果你用WPS来编写也可以。不过存盘时请使用.htm或.html作为扩展名,这样浏览器就可以解释执行了。

②半所见即所得软件:这种软件能大大提高了开发效率,它可以使你在很短的时间内做出HOMEPAGE,且可以学习HTML,这种类型的软件主要有HOTDOG,还有国产的软件网页作坊等。

③所见即所得软件:使用最广泛的编辑器,即使一点不懂HTML方面的知识也可以做出网页。(2)HTML标签类型

以下是HTML标签的类型。

结构性标签,描述文字的意图,例如:

Golf

指明浏览器将“Golf”显示为二级标题。结构性标签并未指示浏览器的显示方式,但是大多数浏览器标准化了这些元素的显示,例如,默认情况下上述标题会被显示为较大的粗体文字(参见层叠样式表(CSS))。比较常用的结构性标签有:

html元素:标记HTML内容的开始和结束;

head元素:标记HTML文件头,包含不在正文中显示的关键字、标题、脚本等;

title元素:标记HTML文件的标题;

body元素:标记HTML文件正文的开始和结束。

呈现性标签,描述文字的外观,例如:

boldface

将“boldface”显示为粗体文字。但是为了统一网站的风格,很多网络出版者使用CSS而不是重复使用呈现性标签。对于bolditalic,也有更加明确的等价呈现性标签,例如,strong emphasisemphasis

超文本标签,将文档的一部分关联到其他文档,例如:

Wikipedia

将会把wikipedia显示为一个超链接URL。

框架页面标签,描述网页如何显示框架网页,较低版本的浏览器並不支持此功能。

代表定义一个框架。若在之后加上rows="100,*",则代表网页会开启一个上下分割网页的框架,而上框架网页的高度是100像素。加上cols="100,*"代表网页左右分割,左框架的网页宽度是100像素。

代表框架页的名称及档案来源。这个语法加在

前。

除了HTML内容之外,也可以在代码中加入注释:

<!-- This is a comment -->

注释不被浏览器解释,仅仅起到说明代码含义或者隐藏部分代码的作用。

每个标签都有特定的属性。由于对标准的支持度相差很大,一些标签和属性可能只被部分浏览器支持。1.3.4 XML

<?xml version=“1.0”encoding=“UTF-8”?>

<!DOCTYPE recipe PUBLIC “-//Happy-Monkey//DTD RecipeBook//EN”

“http://www.happy-monkey.net/recipebook/recipebook.dtd” >

Peanutbutter On A Spoon

peanutbutter

Stick a spoon in a jar of peanutbutter,scoop and pull out a big glob of peanutbutter.

可扩展置标语言(Extensible Markup Language,XML),又称可扩展标记语言,是一种置标语言。置标指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,既可以选择国际通用的标记语言,如HTML;也可以使用像XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从标准通用置标语言(SGML)中简化修改出来的。它主要用于有可扩展置标语言、可扩展样式语言(XSL)、XBRL和XPath等。

XML从1995年开始形成雏形,并向W3C提案,而在1998年2月发布为W3C的标准(XML1.0)。XML的前身是SGML,是IBM从20世纪60年代开始发展的 GML标准化后的名称。

GML的重要概念:

①文件中能够明确地将标示与内容分开;

②所有文件的标示使用方法均一致。

1978年,ANSI将GML加以整理规范,发布成为SGML,1986年起为ISO所采用(ISO 8879),并且被广泛地运用在各种大型的文件计划中,但由于SGML是一种非常严谨的文件描述法,因而导致其过于庞大复杂(标准手册就有500多页),难以理解和学习,进而影响其推广与应用。

同时W3C也发现HTML的许多问题:

①不能解决所有解释资料的问题——如影音档或化学公式、音乐符号等其他形态的内容;

②效能问题——需要下载整份文件,才能开始对文件进行搜寻;

③扩充性、弹性、易读性均不佳。

为了解决以上问题,专家们使用SGML精简制作,并依照HTML的发展经验,产生出一套使用上规则严谨,但是简单的描述资料语言XML。XML是在一个这样的背景下诞生的——是否能有一个更中立的方式,让消费端自行决定要如何消化、呈现从服务端所提供的资讯。

XML被广泛用来作为跨平台之间交互数据的形式,主要针对数据的内容,通过不同的格式化描述手段(XSLT,CSS等)可以完成最终的形式表达(生成对应的HTML,PDF或者其他的文件格式)。(1)XML的用途——携带数据而非表现数据

XML的设计目的是用来传送及携带数据信息,XML不用来表现或展示数据,HTML语言恰恰用来表现数据,所以XML用途的焦点是它说明数据是什么以及携带数据信息。

①丰富文件(Rich Documents):自定文件描述并使其更丰富。

a.属于文件为主的XML技术应用;

b.标记用来定义一份资料应该如何呈现。

②元数据(Metadata):描述其他文件或网络资讯。

a.属于资料为主的XML技术应用;

b.标记用来说明一份资料的意义。

③设定档案(Configuration Files):描述软件设定的参数。

XML不做任何事情,但XML又可以做任何事情。也许这不好理解,XML定义结构、存储信息、传送信息。如下的示例显示了小明发送给小红的小纸条,存储为XML:

<小纸条>

   <发送给>小红

   <发送人>小明

   <主题>祝福

  <具体内容>祝你生日快乐!

但是这个XLM文档不做任何事情,它仅是纯粹的信息标签,这些标签意义的展开依赖于应用它的程序。1.3.5 SQL

结构化查询语言(Structured Query Language,SQL)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL同时也是数据库脚本文件的扩展名。

SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口。它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使它具有极大的灵活性和强大的功能。在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。

SQL最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁、功能强大、简单易学,所以自从1981年推出以来,SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC上常用的数据库开发系统,都支持SQL语言作为查询语言。

美国国家标准局(ANSI)与国际标准化组织(ISO)已经制定了SQL标准。ANSI是一个美国工业和商业集团组织,负责开发美国的商务和通信标准。ANSI同时也是ISO和IEC的成员之一。ANSI 发布与国际标准组织相应的美国标准。1992年,ISO和IEC发布了SQL国际标准,称为SQL-92。ANSI随之发布的相应标准是ANSI SQL-92。ANSI SQL-92有时被称为ANSI SQL。尽管不同的关系数据库使用的SQL版本有一些差异,但大多数都遵循 ANSI SQL标准。SQL Server使用ANSI SQL-92的扩展集,称为T-SQL,其遵循ANSI制定的ANSI SQL-92标准。

SQL语言包含4个部分:

①数据定义语言(DDL),例如,create、drop、alter等语句;

②数据操作语言(DML),例如,insert、update、delete语句;

③数据查询语言,例如,select语句;

④数据控制语言,例如,grant、revoke、commit、rollback等语句。

SQL语言各种语句的具体定义请查阅相关资料。

由于 SQL 指令在部分使用时语法会根据特定条件来变换,如果表格中的字段过多,许多开发人员都会习惯以字符串的方式建立 SQL 指令,而且又使用系统管理员级的账号连到数据库,因此让黑客有机会利用 SQL 的组立方式进行攻击,像是在指令中添加部分刺探性或破坏性的指令(例如,drop table、drop database或是 delete * FROM myTable 等破坏性的指令),让数据库的资料或实体服务器被破坏,导致服务中断或是系统瘫痪等后果,这种攻击手法称为SQL Injection(SQL注入式攻击)。

目前实际中较有效的防御方法,就是全面改用参数化查询,或是检查输入资料,过滤掉潜在的危险指令或资料来防范。1.3.6 动态网页技术

动态网页是与静态网页相对应的,也就是说,网页URL的后缀不是.htm、.html、.shtml、.xml等静态网页的常见形式,而是以.asp、.jsp、.php、.perl、.cgi等形式为后缀,并且在动态网页网址中有一个标志性的符号——“?”。

我们将动态网页的一般特点简要归纳如下:

①动态网页以数据库技术为基础,可以大大降低网站维护的工作量;

②采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、用户管理、订单管理等;

③动态网页实际上并不是独立存在于服务器上的网页文件,只有当用户请求时服务器才返回一个完整的网页;

④动态网页中的“?”对搜索引擎检索存在一定的问题,搜索引擎一般不可能从一个网站的数据库中访问全部网页,或者出于技术方面的考虑,搜索蜘蛛不去抓取网址中“?”后面的内容,因此采用动态网页的网站在进行搜索引擎推广时需要做一定的技术处理才能适应搜索引擎的要求。

除了早期的CGI外,目前主流的动态网页技术有JSP、ASP、PHP等。1.3.6.1 CGI

在早期,动态网页技术主要采用CGI技术,即Common Gateway Interface(公用网关接口)。用户可以使用不同的程序编写合适的CGI程序,如Visual Basic,Delphi或C/C++等。虽然CGI技术成熟而且功能强大,但由于编程困难,效率低下,修改复杂等缺陷,所以有逐渐被新技术取代的趋势。

可以使用不同的程序编写合适的CGI程序,如Visual Basic、Delphi或C/C++等,用户将已经写好的程序放在Web服务器的计算机上运行,再将其运行结果通过Web服务器传输到客户端的浏览器上。我们通过CGI建立Web页面与脚本程序之间的联系,并且可以利用脚本程序来处理访问者输入的信息并据此做出响应。事实上,这样的编制方式比较困难而且效率低下,因为每一次修改程序都必须重新将CGI程序编译成可执行文件。

最常用于编写CGI技术的语言是文字分析报告语言(Practical Extraction and Report Language,Perl),它具有强大的字符串处理能力,特别适合用于分割处理客户端Form提交的数据串;用它来编写的程序后缀为.pl。1.3.6.2 ASP

ASP是Active Server Page的缩写,意为“动态服务器页面”。ASP更精确地说是一个中间件,这个中间件将Web上的请求转入到一个解释器中,在这个解释器中将所有的ASP的Script进行分析,再进行执行,而这时可以在这个中间件中去创建一个新的COM对象,对这个对象中的属性和方法进行操作和调用,同时再通过这些COM组件再完成更多的工作。所以说,ASP强大不在于它的VBScript,而在于它后台的COM组件,这些组件无限地扩充了ASP的能力。1.3.6.3 PHP

PHP(Hypertext Preprocessor)是一种HTML内嵌式的语言(类似于IIS上的ASP)。而PHP独特的语法混合了C、Java、Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。

PHP能够支持诸多数据库,如SQL Server、MySQL、Sybase、Oracle等。

它与HTML语言具有非常好的兼容性,使用者可以直接在脚本代码中加入HTML标签,或者在HTML标签中加入脚本代码从而更好地实现页面控制。PHP提供了标准的数据库接口,数据库连接方便,兼容性强,扩展性强,可以进行面向对象编程。1.3.6.4 JSP

JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载