koorio.com
海量文库 文档专家
赞助商链接
当前位置:首页 >> IT/计算机 >>

Web Server and CGI


Web Server & CGI
Speaker: Lingling Wang

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

2009/09/03

1

Web Server & CGI
Web Server
Web Server 简介 Web Server 环境配置 Web Server 工作原理

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

2

Web Server 简介
Web Server
网页服务器 WWW(WORLD WIDE WEB)服务器

主要功能
提供网上信息浏览服务
? 提供Web文件的存放空间; ? 传送和管理Web文件; ? 支持各种Web程式;

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

3

Web Server 环境配置
主流Web服务器软件 服务器软件 主流
Apache
? 开源,免费 ? Linux, Unix, Windows… ? 安装复杂 ? 稳定, 安全 ? ……

IIS (Internet Information Service)
? Windows OS 绑定的组件 ? 安装简单 ? IIS6.0 较稳定,安全 ? ……

Note : Web服务器软件的选择主要参考服务器端的操作系统及当前应用等。

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

4

Web Server 环境配置
Note: 安装完成后,在系统盘下会产生一个Inetpub的目
录, 这是IIS的主目录。
Inetpub
? wwwroot - web站点的默认主目录; ? scripts - IIS会创建一个虚拟目录SCIPTS指向该目录,并且给这个目 IIS SCIPTS 录执行权限。此目录存在安全隐患。 ? AdminScripts -存放IIS的Web方式管理脚本文件; ? iissamples-IIS帮助和实例文件存放目录; ? mailroot -smtp服务主目录; ? ftproot - ftp站点的默认主目录;

Web Server Installation.pdf http://172.22.102.123
Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

5

Web Server 环境配置
虚拟目录
从主目录以外的其他目录中进行发布,必须创建虚拟目录。 虚拟目录不包含在主目录中,但在显示给客户端浏览器时就象位 于主目录中一样。 虚拟目录有一个“别名”,供 Web 浏览器访问此目录时使用。 由于别名通常要比目录的路径名短,因此便于用户输入。使用别 名更加安全,因为用户不知道文件在服务器上的实际位置,所以 无法使用此信息修改文件。使用别名可以更方便地在站点中移动 目录,原因在于不需要更改目录的 URL,只需更改别名与目录实 际位置之间的映射即可。

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

6

Web Server 工作原理
工作原理图

浏览器将URL分解为三个部分
协议(“http”)

http://172.22.102.123/chunhua.html
Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

服务器名(“172.22.102.123”) 文件名(“chunhua.html”)
7

Web Server 工作原理
工作原理步骤
Step1: Web 浏览器根据客户提供的URL链接相关的Web服务器; Step2: 如果能和Web服务器链接上,浏览器将把整个URL传送给 Web服务器; Step3: Web服务器根据URL所提供的路径查询Web浏览器所需要 的资源,并将该资源传送给Web浏览器; Step4: Web服务器中断和浏览器的链接 Step5: Web浏览器显示Web服务器传回的Web页面

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

8

Web Server & CGI
CGI
CGI 简介 CGI 环境配置 Server - CGI工作原理 CGI 预备知识 CGI 编程 CGI 安全问题
Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

9

CGI 简介

CGI(Common Gateway Interface)
CGI(通用网关接口),即Web服务器主机提供信息服务的标准 接口,通过该接口, Web服务器能够执行应用程式并将它们的输 出,如文字、图形、声音等传送给一个Web浏览器。一般来说, CGI标准接口的功能就是在HTML文档与服务器应用程式之间传 递信息。 CGI标准接口主要解决以下几个问题:
? Web 服务器和CGI程式之间如何传递信息? ? Web服务器向CGI程式传送什么信息? ? Web服务器向CGI程式传送信息的格式是什么? ? CGI程式向Web服务器返回什么信息? ? CGI程式向Web服务器返回信息的格式是什么?
Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

10

CGI 简介
CGI 程式(.cgi)语言 程式( )
编译型语言
? C/C++ ? Visual Basic ?…

解释型
? Perl ? Shell ? AppleScript ?…

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

11

CGI 环境配置
环境配置讲解
CGI(C, Perl)环境配置 .pdf

示例
CGI(C)
? testIsLinked.html - simpleAnswerServer.c
– http://172.22.102.123/html/testIsLinked.html

CGI(Perl)
? Perl简介 (Larry Wall ) 简介
– There's More Than One Way To Do It!

? testIsLinked(Perl).html – simpleAnswerServer(Perl).pl
– http://172.22.102.123/html/testIsLinked(Perl).html
Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

12

Server-CGI 工作原理 -
CGI工作步骤 工作步骤: 工作步骤
Step1: 客户端发出请求 Step2: Web服务器激活CGI程序 Step3: CGI程序对客户端的请求做出反应 Step4: Web服务器将CGI的处理结果传送 给客户端 Step5: Web服务器中断和客户端浏览器 的链接 Step6: Web 浏览器将CGI程序的输出显 示到浏览器的窗体

Note:
1. 如果请求时一个普通的文件(如HTML 文件、GIF或JPEG文件),Web服务器 将文件直接传送给客户端的浏览器。如 果是CGI程式,服务器激活CGI程式。 2. 在CGI程式被执行前,Web服务器要为 CGI程式设置一些环境变量。CGI程式结 束,环境变量也随着消失。
Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

13

CGI 工作原理
表单、服务器和 表单、服务器和CGI之间的关系 之间的关系

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

14

CGI 预备知识-STDIN/STDOUT 预备知识-
STDIN/STDOUT
文件句柄 STDOUT: 屏幕 重定向 管道连接: 一个程式的标准输入/输出(STDIN/STDOUT)也可以和 另一个程式的标准输出/输入相连 STDIN: 键盘

CGI 程式输入 输出信息 程式输入/输出信息
CGI程式输入/输出信息方式与普通程式不一样!!! 对于CGI程式来说,当CGI程式被服务器激活后,其标准输入链接 到Web服务器的标准输出,标准输出则被连到服务器的标准输入, 形成管道链接。

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

15

CGI 预备知识-STDIN/STDOUT 预备知识-
Web服务器-客户端和CGI程式间的中介 服务器-客户端和 程式间的中介 服务器 程式间的
Web 服务器将Web浏览器传送来的信息放在它的标准输出和环境变量中; CGI程式从它的标准输入(即Web服务器的环境变量和标准输出)获取信息, 并将最终输出结果写向它的标准输出(即Web服务器的标准输入); Web服务器从它的标准输入(即CGI程式的标准输出)获取CGI程序的输出 结果并将它传送给Web浏览器。

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

16

CGI 预备知识-GET/POST 预备知识-
GET
客户机把表单中的信息附加到由action属性标记命名的URL的末尾,用 一个问号把经过URL编码后的信息与URL名字分开; 受到URL长度的限制,只能传递大约1024字节,且内容在URL中显示; 要传输的信息由http头部传输的; 缺省方法;

POST
要传输的信息作为http请求的内容,传输的数据量大,可以达到2M; 传输的信息不在URL中显示出来;

Note: 顾名思义, Post主要为了将数据传送到服务器端; Get主要从服务
器端取得数据。

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

17

CGI 预备知识-URL编码 解码 预备知识- 编码/解码 编码
编码- URL编码-浏览器打包表单输入的格式 编码
浏览器从表单获取所有的name和其值 ,将它们以 name/value 参数 编码作发给服务器; 每对 name/value 由 & 符分开;name/value 由 = 符分开。如果用户 没有输入值给这个 name,name及 = 符出现,无值; 空格用‘+’代替; 保留的控制字符、具有特殊意义的字符用%接相应的十六进制 ASCII码代替。 http://172.22.102.123/html/userRegistration_1.html

解码- URL解码-编码逆过程 解码
Html表单变量与其相应值的分离 特殊字符替换

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

18

CGI 预备知识-环境变量 预备知识-
Request-Specific环境变量 环境变量
CONTENT_TYPE -所传送来的信息的MIME类型
? 一般是application/x-www-form-urlencoded, 表示数据来自于HTML表单。

REQUEST_METHOD -服务器与CGI程序之间的信息传输方式
? POST/ GET

CONTENT_LENGTH - 从STDIN中可以读到的有效数据的字节数
? POST 传输方式

QUERY_STRING - 传送的信息
? GET 传输方式

REMOTE_ADDR - 发送请求的客户机的IP地址 REMOTE_HOST -发送请求的客户机的主机名 …
Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

19

CGI 预备知识-环境变量 预备知识-
Server-Specific 环境变量
SERVER_NAME -服务器的主机名或 IP地址 SERVER_SOFTWARE -回应客户端请求的服务器的软体名称和版本 SERVER_PROTOCOL -用于发送请求的协议的名称和版本号 SERVER_PORT -服务器接受请求时所使用的端口号 …

Client-Specific 环境变量
HTTP_ACCEPT - 说明了浏览器本次请求所能接收的数据类型 HTTP_REFERER - 存储浏览器当前页面所请求上一个页面的URL HTTP_USER_AGENT - 存储浏览器软件的类型和版本号 …
Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

20

CGI 编程
CGI 程式结构
初始化
? 环境变量的获取与判断 ? 接受所要处理的有关数据

处理
? 输入处理 -URL解码 ? 输出处理- 格式化输出 输出处理-
– 任意输出前均必须有一个用于定义MIME类型的输出类型(Content-type)行, MIME类型格式为类型/子类型(type/subtype),如Content-type=text/html, 服务器 告诉客户机如何处理该文件,缺省值为text/plain; – 随后还必须跟一个空行;

终止
? 如果程式对某些文件进行了上锁操作,必须解锁; ? 如果程式申请了某些对象如信号量,必须释放它们; ? 释放内存。

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

21

CGI 编程
CGI(C)程式示例 程式示例
userRegistration_1.html - userRegistration_1.c
? http://172.22.102.123/html/userRegistration_1.html

userRegistration_2.html - userRegistration_2.c
? http://172.22.102.123/html/userRegistration_2.html

userRegistration_3.html - userRegistration_3.c (cgihtml库) 库
? http://172.22.102.123/html/userRegistration_3.html

CGI(Perl)程式示例 程式示例
investigation(Perl).html - investigation.pl
? http://172.22.102.123/html/investigation(Perl).html

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

22

CGI 安全问题
Web服务器的安全 服务器的安全
Web服务器软件编制中的BUG 、服务器配置错误 可能导致: CGI源代码泄露、 物理路径信息泄露 、系统敏感信息泄露 、 远程执行任意指令 …

CGI语言的安全 语言的安全
输入验证错误 ? 没有过滤“../”经常造成泄露系统文件 ? 没有过滤“;”经常导致执行任意系统指令 ? 没有过滤“|”或“\t”经常导致文本文件攻击 ? 没有过滤“’”和“#”经常导致SQL数据库攻击 使用错误 ? Perl中的“die”函数,如果没有在错误信息后面加上“\n”的话就极可 能 导致物理路径泄露; …
Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

23

总结
思考问题
简述WebServer的主要功能; 当前主流Web服务器软件有哪些? CGI标准接口主要解决哪些问题? Web服务器如何充当客户端和CGI程式间的中介? CGI程式常常用到哪些环境变量,并简述其含义?

可选题
配置自己的主机为Web服务器,在主目录下创建一个MyfirstWeb文 档,设置其为默认网页。 选择自己熟悉的语言编写CGI程式,功能:将用户表单输入的信息 以追加形式存入文件。

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

24

总结
主要参考书籍
CGI编程指南 编程指南 CGI技术全面接触 技术全面接触 CGI程序设计指南 程序设计指南

进一步学习资料
PerlChina Perl语言入门 第四版 语言入门(第四版 语言入门 第四版) BOA(CGI,ASP,PHP,JAVA)

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

25

Thanks! Question, Suggestion & Discussion

Copyright ? 2009, Cameo Communications, Inc. All rights reserved.

26


赞助商链接
更多搜索:Web Server and CGI
推荐相关:
网站首页 | 网站地图
All rights reserved Powered by 酷我资料网 koorio.com
copyright ©right 2014-2019。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com