狠狠撸

狠狠撸Share a Scribd company logo
1Copyright ? 2009, Cameo Communications, Inc. All rights reserved. 2009/09/03
Web Server & CGI
Speaker: Lingling Wang
222Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server & CGI
? Web Server
? Web Server 介绍
? Web Server 环境配置
? Web Server 工作原理
333Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server 介绍
? Web Server
? 网页服务器
? WWW(WORLD WIDE WEB) 服务器
? 主要功能
? 提供网上信息浏览服务
? 提供 Web 文件的存放空间;
? 传送和管理 Web 文件;
? 支持各种 Web 程式;
444Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server 环境配置
?主流 Web 服务器软件
? Apache
? 开源,免费
? Linux, Unix, Windows…
? 安装复杂
? 稳定 , 安全
? ……
? IIS (Internet Information Service)
? Windows OS 绑定的组件
? 安装简单
? IIS6.0 较稳定,安全
? ……
Note : Web 服务器软件的选择主要参考服务器端的操作系统及当前应用等。
555Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server 环境配置
? Note: 安装完成后,在系统盘下会产生一个 Inetpub 的目
录 , 这是 IIS 的主目录。
? Inetpub
? wwwroot - web 站点的默认主目录;
? scripts - IIS 会创建一个虚拟目录 SCIPTS 指向该目录,并且给这个
目录执行权限。此目录存在安全隐患。
? AdminScripts -存放 IIS 的 Web 方式管理脚本文件;
? iissamples - IIS 帮助和实例文件存放目录;
? mailroot - smtp 服务主目录;
? ftproot - ftp 站点的默认主目录;
Web Server Installation.pdf
http://172.22.102.123
666Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server 环境配置
? 虚拟目录
? 从主目录以外的其他目录中进行发布,必须创建虚拟目录。
? 虚拟目录不包含在主目录中,但在显示给客户端浏览器时就象
位于主目录中一样。
?? 虚拟目录有一个“别名”,供 Web 浏览器访问此目录时使用。由
于别名通常要比目录的路径名短,因此便于用户输入。使用别名
更加安全,因为用户不知道文件在服务器上的实际位置,所以无
法使用此信息修改文件。使用别名可以更方便地在站点中移动目
录,原因在于不需要更改目录的 URL ,只需更改别名与目录实
际位置之间的映射即可。
777Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server 工作原理
? 浏览器将 URL 分解为三个部分
? 协议(“ http” )
? 服务器名(“ 172.22.102.123” )
? 文件名(“ chunhua.html” )
? 工作原理图
http://172.22.102.123/chunhua.html
888Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server 工作原理
?工作原理步骤
? Step1: Web 浏览器根据客户提供的 URL 链接相关的 Web 服务器
;
? Step2: 如果能和 Web 服务器链接上,浏览器将把整个 URL 传送
给 Web 服务器;
? Step3: Web 服务器根据 URL 所提供的路径查询 Web 浏览器所需
要的资源,并将该资源传送给 Web 浏览器;
? Step4: Web 服务器中断和浏览器的链接
? Step5: Web 浏览器显示 Web 服务器传回的 Web 页面
999Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Web Server & CGI
? CGI
? CGI 介绍
? CGI 环境配置
? Server - CGI 工作原理
? CGI 预备知识
? CGI 编程
? CGI 安全问题
101010Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
CGI 介绍
?CGI(Common Gateway Interface)
? CGI (通用网关接口),即 Web 服务器主机提供信息服务的标
准接口,通过该接口, Web 服务器能够执行应用程式并将它们
的输出,如文字、图形、声音等传送给一个 Web 浏览器。一般
来说, CGI 标准接口的功能就是在 HTML 文档与服务器应用程
式之间传递信息。
? CGI 标准接口主要解决以下几个问题:
? Web 服务器和 CGI 程式之间如何传递信息?
? Web 服务器向 CGI 程式传送什么信息?
? Web 服务器向 CGI 程式传送信息的格式是什么?
? CGI 程式向 Web 服务器返回什么信息?
? CGI 程式向 Web 服务器返回信息的格式是什么?
111111Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
CGI 介绍
? CGI 程式( .cgi )语言
? 编译型语言
? C/C++
? Visual Basic
? …
? 解释型
? Perl
? Shell
? AppleScript
? …
121212Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
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
131313Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
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 程
式结束,环境变量也随着消失。
141414Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
CGI 工作原理
? 表单、服务器和 CGI 之间的关系
151515Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
CGI 预备知识- STDIN/STDOUT
? STDIN/STDOUT
? 文件句柄
? STDOUT: 屏幕 STDIN: 键盘
? 重定向
? 管道连接 : 一个程式的标准输入 / 输出( STDIN/STDOUT )也可以
和另一个程式的标准输出 / 输入相连
? CGI 程式输入 / 输出信息
? CGI 程式输入 / 输出信息方式与普通程式不一样 !!!
? 对于 CGI 程式来说,当 CGI 程式被服务器激活后,其标准输入链接
到 Web 服务器的标准输出,标准输出则被连到服务器的标准输入,
形成管道链接。
161616Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
CGI 预备知识- STDIN/STDOUT
? Web 服务器-客户端和 CGI 程式间的中介
? Web 服务器将 Web 浏览器传送来的信息放在它的标准输出和环境变量中;
? CGI 程式从它的标准输入 ( 即 Web 服务器的环境变量和标准输出 ) 获取信息
, 并将最终输出结果写向它的标准输出 ( 即 Web 服务器的标准输入 ) ;
? Web 服务器从它的标准输入(即 CGI 程式的标准输出)获取 CGI 程序的输
出结果并将它传送给 Web 浏览器。
171717Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
CGI 预备知识- GET/POST
? GET
? 客户机把表单中的信息附加到由 action 属性标记命名的 URL 的末尾,
用一个问号把经过 URL 编码后的信息与 URL 名字分开;
? 受到 URL 长度的限制,只能传递大约 1024 字节,且内容在 URL 中显
示;
? 要传输的信息由 http 头部传输的;
? 缺省方法;
? POST
? 要传输的信息作为 http 请求的内容,传输的数据量大,可以达到 2M ;
? 传输的信息不在 URL 中显示出来;
Note: 顾名思义 , Post 主要为了将数据传送到服务器端 ; Get 主要从
服务
器端取得数据。
181818Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
CGI 预备知识- URL 编码 / 解码
? U RL 编码-浏览器打包表单输入的格式
? 浏览器从表单获取所有的 name 和其值 ,将它们以 name/value 参
数编码作发给服务器;
? 每对 name/value 由 & 符分开; name/value 由 = 符分开。如果
用户没有输入值给这个 name , name 及 = 符出现,无值;
? 空格用‘ +’ 代替;
? 保留的控制字符、具有特殊意义的字符用 % 接相应的十六进制
ASCII 码代替。
? U RL 解码-编码逆过程
? Html 表单变量与其相应值的分离
? 特殊字符替换
http://172.22.102.123/html/userRegistration_1.html
191919Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
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 -发送请求的客户机的主机名
? …
202020Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
CGI 预备知识-环境变量
? Server-Specific 环境变量
? SERVER_NAME -服务器的主机名或 IP 地址
? SERVER_SOFTWARE -回应客户端请求的服务器的软体名称和版本
? SERVER_PROTOCOL -用于发送请求的协议的名称和版本号
? SERVER_PORT -服务器接受请求时所使用的端口号
? …
? Client-Specific 环境变量
? HTTP_ACCEPT - 说明了浏览器本次请求所能接收的数据类型
? HTTP_REFERER - 存储浏览器当前页面所请求上一个页面的 URL
? HTTP_USER_AGENT - 存储浏览器软件的类型和版本号
? …
212121Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
CGI 编程
? CGI 程式结构
? 初始化
? 环境变量的获取与判断
? 接受所要处理的有关数据
? 处理
? 输入处理 - URL 解码
? 输出处理- 格式化输出
– 任意输出前均必须有一个用于定义 MIME 类型的输出类型( Content-type )行,
MIME 类型格式为类型 / 子类型( type/subtype ),如 Content-type=text/html, 服
务器告诉客户机如何处理该文件,缺省值为 text/plain ;
– 随后还必须跟一个空行;
? 终止
? 如果程式对某些文件进行了上锁操作,必须解锁;
? 如果程式申请了某些对象如信号量,必须释放它们;
? 释放内存。
222222Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
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
232323Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
CGI 安全问题
? Web 服务器的安全
? Web 服务器软件编制中的 BUG 、服务器配置错误
? 可能导致: CGI 源代码泄露、 物理路径信息泄露 、系统敏感信息泄露
、 远程执行任意指令 …
? CGI 语言的安全
? ? 输入验证错误
? 没有过滤“ ../” 经常造成泄露系统文件
? 没有过滤“ ;” 经常导致执行任意系统指令
? 没有过滤“ |” 或“ t” 经常导致文本文件攻击
? 没有过滤“’”和“ #” 经常导致 SQL 数据库攻击
? 使用错误
? Perl 中的“ die” 函数,如果没有在错误信息后面加上“ n” 的话就极可能
导致物理路径泄露 ;
? …
242424Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
总 结
? 思考问题
? 简述 WebServer 的主要功能;
? 当前主流 Web 服务器软件有哪些?
? CGI 标准接口主要解决哪些问题?
? Web 服务器如何充当客户端和 CGI 程式间的中介?
? CGI 程式常常用到哪些环境变量,并简述其含义?
? 可选题
? 配置自己的主机为 Web 服务器,在主目录下创建一个 MyfirstWeb
文档,设置其为默认网页。
? 选择自己熟悉的语言编写 CGI 程式,功能:将用户表单输入的信
息以追加形式存入文件。
252525Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
总 结
? 主要参考书籍
? CGI 编程指南
? CGI 技术全面接触
? CGI 程序设计指南
? 进一步学习资料
? PerlChina
? Perl 语言入门 ( 第四版 )
? BOA(CGI,ASP,PHP,JAVA)
262626Copyright ? 2009, Cameo Communications, Inc. All rights reserved.
Question, Suggestion & Discussion
Thanks!

More Related Content

Web server and_cgi

  • 1. 1Copyright ? 2009, Cameo Communications, Inc. All rights reserved. 2009/09/03 Web Server & CGI Speaker: Lingling Wang
  • 2. 222Copyright ? 2009, Cameo Communications, Inc. All rights reserved. Web Server & CGI ? Web Server ? Web Server 介绍 ? Web Server 环境配置 ? Web Server 工作原理
  • 3. 333Copyright ? 2009, Cameo Communications, Inc. All rights reserved. Web Server 介绍 ? Web Server ? 网页服务器 ? WWW(WORLD WIDE WEB) 服务器 ? 主要功能 ? 提供网上信息浏览服务 ? 提供 Web 文件的存放空间; ? 传送和管理 Web 文件; ? 支持各种 Web 程式;
  • 4. 444Copyright ? 2009, Cameo Communications, Inc. All rights reserved. Web Server 环境配置 ?主流 Web 服务器软件 ? Apache ? 开源,免费 ? Linux, Unix, Windows… ? 安装复杂 ? 稳定 , 安全 ? …… ? IIS (Internet Information Service) ? Windows OS 绑定的组件 ? 安装简单 ? IIS6.0 较稳定,安全 ? …… Note : Web 服务器软件的选择主要参考服务器端的操作系统及当前应用等。
  • 5. 555Copyright ? 2009, Cameo Communications, Inc. All rights reserved. Web Server 环境配置 ? Note: 安装完成后,在系统盘下会产生一个 Inetpub 的目 录 , 这是 IIS 的主目录。 ? Inetpub ? wwwroot - web 站点的默认主目录; ? scripts - IIS 会创建一个虚拟目录 SCIPTS 指向该目录,并且给这个 目录执行权限。此目录存在安全隐患。 ? AdminScripts -存放 IIS 的 Web 方式管理脚本文件; ? iissamples - IIS 帮助和实例文件存放目录; ? mailroot - smtp 服务主目录; ? ftproot - ftp 站点的默认主目录; Web Server Installation.pdf http://172.22.102.123
  • 6. 666Copyright ? 2009, Cameo Communications, Inc. All rights reserved. Web Server 环境配置 ? 虚拟目录 ? 从主目录以外的其他目录中进行发布,必须创建虚拟目录。 ? 虚拟目录不包含在主目录中,但在显示给客户端浏览器时就象 位于主目录中一样。 ?? 虚拟目录有一个“别名”,供 Web 浏览器访问此目录时使用。由 于别名通常要比目录的路径名短,因此便于用户输入。使用别名 更加安全,因为用户不知道文件在服务器上的实际位置,所以无 法使用此信息修改文件。使用别名可以更方便地在站点中移动目 录,原因在于不需要更改目录的 URL ,只需更改别名与目录实 际位置之间的映射即可。
  • 7. 777Copyright ? 2009, Cameo Communications, Inc. All rights reserved. Web Server 工作原理 ? 浏览器将 URL 分解为三个部分 ? 协议(“ http” ) ? 服务器名(“ 172.22.102.123” ) ? 文件名(“ chunhua.html” ) ? 工作原理图 http://172.22.102.123/chunhua.html
  • 8. 888Copyright ? 2009, Cameo Communications, Inc. All rights reserved. Web Server 工作原理 ?工作原理步骤 ? Step1: Web 浏览器根据客户提供的 URL 链接相关的 Web 服务器 ; ? Step2: 如果能和 Web 服务器链接上,浏览器将把整个 URL 传送 给 Web 服务器; ? Step3: Web 服务器根据 URL 所提供的路径查询 Web 浏览器所需 要的资源,并将该资源传送给 Web 浏览器; ? Step4: Web 服务器中断和浏览器的链接 ? Step5: Web 浏览器显示 Web 服务器传回的 Web 页面
  • 9. 999Copyright ? 2009, Cameo Communications, Inc. All rights reserved. Web Server & CGI ? CGI ? CGI 介绍 ? CGI 环境配置 ? Server - CGI 工作原理 ? CGI 预备知识 ? CGI 编程 ? CGI 安全问题
  • 10. 101010Copyright ? 2009, Cameo Communications, Inc. All rights reserved. CGI 介绍 ?CGI(Common Gateway Interface) ? CGI (通用网关接口),即 Web 服务器主机提供信息服务的标 准接口,通过该接口, Web 服务器能够执行应用程式并将它们 的输出,如文字、图形、声音等传送给一个 Web 浏览器。一般 来说, CGI 标准接口的功能就是在 HTML 文档与服务器应用程 式之间传递信息。 ? CGI 标准接口主要解决以下几个问题: ? Web 服务器和 CGI 程式之间如何传递信息? ? Web 服务器向 CGI 程式传送什么信息? ? Web 服务器向 CGI 程式传送信息的格式是什么? ? CGI 程式向 Web 服务器返回什么信息? ? CGI 程式向 Web 服务器返回信息的格式是什么?
  • 11. 111111Copyright ? 2009, Cameo Communications, Inc. All rights reserved. CGI 介绍 ? CGI 程式( .cgi )语言 ? 编译型语言 ? C/C++ ? Visual Basic ? … ? 解释型 ? Perl ? Shell ? AppleScript ? …
  • 12. 121212Copyright ? 2009, Cameo Communications, Inc. All rights reserved. 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
  • 13. 131313Copyright ? 2009, Cameo Communications, Inc. All rights reserved. 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 程 式结束,环境变量也随着消失。
  • 14. 141414Copyright ? 2009, Cameo Communications, Inc. All rights reserved. CGI 工作原理 ? 表单、服务器和 CGI 之间的关系
  • 15. 151515Copyright ? 2009, Cameo Communications, Inc. All rights reserved. CGI 预备知识- STDIN/STDOUT ? STDIN/STDOUT ? 文件句柄 ? STDOUT: 屏幕 STDIN: 键盘 ? 重定向 ? 管道连接 : 一个程式的标准输入 / 输出( STDIN/STDOUT )也可以 和另一个程式的标准输出 / 输入相连 ? CGI 程式输入 / 输出信息 ? CGI 程式输入 / 输出信息方式与普通程式不一样 !!! ? 对于 CGI 程式来说,当 CGI 程式被服务器激活后,其标准输入链接 到 Web 服务器的标准输出,标准输出则被连到服务器的标准输入, 形成管道链接。
  • 16. 161616Copyright ? 2009, Cameo Communications, Inc. All rights reserved. CGI 预备知识- STDIN/STDOUT ? Web 服务器-客户端和 CGI 程式间的中介 ? Web 服务器将 Web 浏览器传送来的信息放在它的标准输出和环境变量中; ? CGI 程式从它的标准输入 ( 即 Web 服务器的环境变量和标准输出 ) 获取信息 , 并将最终输出结果写向它的标准输出 ( 即 Web 服务器的标准输入 ) ; ? Web 服务器从它的标准输入(即 CGI 程式的标准输出)获取 CGI 程序的输 出结果并将它传送给 Web 浏览器。
  • 17. 171717Copyright ? 2009, Cameo Communications, Inc. All rights reserved. CGI 预备知识- GET/POST ? GET ? 客户机把表单中的信息附加到由 action 属性标记命名的 URL 的末尾, 用一个问号把经过 URL 编码后的信息与 URL 名字分开; ? 受到 URL 长度的限制,只能传递大约 1024 字节,且内容在 URL 中显 示; ? 要传输的信息由 http 头部传输的; ? 缺省方法; ? POST ? 要传输的信息作为 http 请求的内容,传输的数据量大,可以达到 2M ; ? 传输的信息不在 URL 中显示出来; Note: 顾名思义 , Post 主要为了将数据传送到服务器端 ; Get 主要从 服务 器端取得数据。
  • 18. 181818Copyright ? 2009, Cameo Communications, Inc. All rights reserved. CGI 预备知识- URL 编码 / 解码 ? U RL 编码-浏览器打包表单输入的格式 ? 浏览器从表单获取所有的 name 和其值 ,将它们以 name/value 参 数编码作发给服务器; ? 每对 name/value 由 & 符分开; name/value 由 = 符分开。如果 用户没有输入值给这个 name , name 及 = 符出现,无值; ? 空格用‘ +’ 代替; ? 保留的控制字符、具有特殊意义的字符用 % 接相应的十六进制 ASCII 码代替。 ? U RL 解码-编码逆过程 ? Html 表单变量与其相应值的分离 ? 特殊字符替换 http://172.22.102.123/html/userRegistration_1.html
  • 19. 191919Copyright ? 2009, Cameo Communications, Inc. All rights reserved. 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 -发送请求的客户机的主机名 ? …
  • 20. 202020Copyright ? 2009, Cameo Communications, Inc. All rights reserved. CGI 预备知识-环境变量 ? Server-Specific 环境变量 ? SERVER_NAME -服务器的主机名或 IP 地址 ? SERVER_SOFTWARE -回应客户端请求的服务器的软体名称和版本 ? SERVER_PROTOCOL -用于发送请求的协议的名称和版本号 ? SERVER_PORT -服务器接受请求时所使用的端口号 ? … ? Client-Specific 环境变量 ? HTTP_ACCEPT - 说明了浏览器本次请求所能接收的数据类型 ? HTTP_REFERER - 存储浏览器当前页面所请求上一个页面的 URL ? HTTP_USER_AGENT - 存储浏览器软件的类型和版本号 ? …
  • 21. 212121Copyright ? 2009, Cameo Communications, Inc. All rights reserved. CGI 编程 ? CGI 程式结构 ? 初始化 ? 环境变量的获取与判断 ? 接受所要处理的有关数据 ? 处理 ? 输入处理 - URL 解码 ? 输出处理- 格式化输出 – 任意输出前均必须有一个用于定义 MIME 类型的输出类型( Content-type )行, MIME 类型格式为类型 / 子类型( type/subtype ),如 Content-type=text/html, 服 务器告诉客户机如何处理该文件,缺省值为 text/plain ; – 随后还必须跟一个空行; ? 终止 ? 如果程式对某些文件进行了上锁操作,必须解锁; ? 如果程式申请了某些对象如信号量,必须释放它们; ? 释放内存。
  • 22. 222222Copyright ? 2009, Cameo Communications, Inc. All rights reserved. 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
  • 23. 232323Copyright ? 2009, Cameo Communications, Inc. All rights reserved. CGI 安全问题 ? Web 服务器的安全 ? Web 服务器软件编制中的 BUG 、服务器配置错误 ? 可能导致: CGI 源代码泄露、 物理路径信息泄露 、系统敏感信息泄露 、 远程执行任意指令 … ? CGI 语言的安全 ? ? 输入验证错误 ? 没有过滤“ ../” 经常造成泄露系统文件 ? 没有过滤“ ;” 经常导致执行任意系统指令 ? 没有过滤“ |” 或“ t” 经常导致文本文件攻击 ? 没有过滤“’”和“ #” 经常导致 SQL 数据库攻击 ? 使用错误 ? Perl 中的“ die” 函数,如果没有在错误信息后面加上“ n” 的话就极可能 导致物理路径泄露 ; ? …
  • 24. 242424Copyright ? 2009, Cameo Communications, Inc. All rights reserved. 总 结 ? 思考问题 ? 简述 WebServer 的主要功能; ? 当前主流 Web 服务器软件有哪些? ? CGI 标准接口主要解决哪些问题? ? Web 服务器如何充当客户端和 CGI 程式间的中介? ? CGI 程式常常用到哪些环境变量,并简述其含义? ? 可选题 ? 配置自己的主机为 Web 服务器,在主目录下创建一个 MyfirstWeb 文档,设置其为默认网页。 ? 选择自己熟悉的语言编写 CGI 程式,功能:将用户表单输入的信 息以追加形式存入文件。
  • 25. 252525Copyright ? 2009, Cameo Communications, Inc. All rights reserved. 总 结 ? 主要参考书籍 ? CGI 编程指南 ? CGI 技术全面接触 ? CGI 程序设计指南 ? 进一步学习资料 ? PerlChina ? Perl 语言入门 ( 第四版 ) ? BOA(CGI,ASP,PHP,JAVA)
  • 26. 262626Copyright ? 2009, Cameo Communications, Inc. All rights reserved. Question, Suggestion & Discussion Thanks!