Web server and_cgi
description
Transcript of Web server and_cgi
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 工作原理
浏览器
表单
浏览器将表单数据编码后传递给
服务器
Web 服务器
处理数据的CGI程式
提交CGI处理程式
返回处理结果
用户填写表单
Web服务器将CGI程式处理结果返回给浏览器
表单、服务器和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 浏览器。
标准输入
标准输出
环境变量
CGI程式
Web浏览器 Web服务器
输出
输入
输入
输出
Web浏览器和CGI程式之间的交流
标准输出
标准输入
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!