Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Web server and_cgi

3,015 views

Published on

mang kinds of cgi interface

  • Be the first to comment

  • Be the first to like this

Web server and_cgi

  1. 1. 1Copyright © 2009, Cameo Communications, Inc. All rights reserved. 2009/09/03Web Server & CGISpeaker: Lingling Wang
  2. 2. 222Copyright © 2009, Cameo Communications, Inc. All rights reserved.Web Server & CGI Web Server Web Server 简介 Web Server 环境配置 Web Server 工作原理
  3. 3. 333Copyright © 2009, Cameo Communications, Inc. All rights reserved.Web Server 简介 Web Server 网页服务器 WWW(WORLD WIDE WEB) 服务器 主要功能 提供网上信息浏览服务• 提供 Web 文件的存放空间;• 传送和管理 Web 文件;• 支持各种 Web 程式;
  4. 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. 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.pdfhttp://172.22.102.123
  6. 6. 666Copyright © 2009, Cameo Communications, Inc. All rights reserved.Web Server 环境配置 虚拟目录 从主目录以外的其他目录中进行发布,必须创建虚拟目录。 虚拟目录不包含在主目录中,但在显示给客户端浏览器时就象位于主目录中一样。  虚拟目录有一个“别名”,供 Web 浏览器访问此目录时使用。由于别名通常要比目录的路径名短,因此便于用户输入。使用别名更加安全,因为用户不知道文件在服务器上的实际位置,所以无法使用此信息修改文件。使用别名可以更方便地在站点中移动目录,原因在于不需要更改目录的 URL ,只需更改别名与目录实际位置之间的映射即可。
  7. 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. 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. 9. 999Copyright © 2009, Cameo Communications, Inc. All rights reserved.Web Server & CGI CGI CGI 简介 CGI 环境配置 Server - CGI 工作原理 CGI 预备知识 CGI 编程 CGI 安全问题
  10. 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. 11. 111111Copyright © 2009, Cameo Communications, Inc. All rights reserved.CGI 简介 CGI 程式( .cgi )语言 编译型语言• C/C++• Visual Basic• … 解释型• Perl• Shell• AppleScript• …
  12. 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 )– Theres More Than One Way To Do It!• testIsLinked(Perl).html – simpleAnswerServer(Perl).pl– http://172.22.102.123/html/testIsLinked(Perl).html
  13. 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. 14. 141414Copyright © 2009, Cameo Communications, Inc. All rights reserved.CGI 工作原理 表单、服务器和 CGI 之间的关系
  15. 15. 151515Copyright © 2009, Cameo Communications, Inc. All rights reserved.CGI 预备知识- STDIN/STDOUT STDIN/STDOUT 文件句柄 STDOUT: 屏幕 STDIN: 键盘 重定向 管道连接 : 一个程式的标准输入 / 输出( STDIN/STDOUT )也可以和另一个程式的标准输出 / 输入相连 CGI 程式输入 / 输出信息 CGI 程式输入 / 输出信息方式与普通程式不一样 !!! 对于 CGI 程式来说,当 CGI 程式被服务器激活后,其标准输入链接到 Web 服务器的标准输出,标准输出则被连到服务器的标准输入,形成管道链接。
  16. 16. 161616Copyright © 2009, Cameo Communications, Inc. All rights reserved.CGI 预备知识- STDIN/STDOUT Web 服务器-客户端和 CGI 程式间的中介 Web 服务器将 Web 浏览器传送来的信息放在它的标准输出和环境变量中; CGI 程式从它的标准输入 ( 即 Web 服务器的环境变量和标准输出 ) 获取信息, 并将最终输出结果写向它的标准输出 ( 即 Web 服务器的标准输入 ) ; Web 服务器从它的标准输入(即 CGI 程式的标准输出)获取 CGI 程序的输出结果并将它传送给 Web 浏览器。
  17. 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. 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. 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. 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. 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. 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. 23. 232323Copyright © 2009, Cameo Communications, Inc. All rights reserved.CGI 安全问题 Web 服务器的安全 Web 服务器软件编制中的 BUG 、服务器配置错误 可能导致: CGI 源代码泄露、 物理路径信息泄露 、系统敏感信息泄露、 远程执行任意指令 … CGI 语言的安全   输入验证错误• 没有过滤“ ../” 经常造成泄露系统文件• 没有过滤“ ;” 经常导致执行任意系统指令• 没有过滤“ |” 或“ t” 经常导致文本文件攻击• 没有过滤“’”和“ #” 经常导致 SQL 数据库攻击 使用错误• Perl 中的“ die” 函数,如果没有在错误信息后面加上“ n” 的话就极可能导致物理路径泄露 ; …
  24. 24. 242424Copyright © 2009, Cameo Communications, Inc. All rights reserved.总 结 思考问题 简述 WebServer 的主要功能; 当前主流 Web 服务器软件有哪些? CGI 标准接口主要解决哪些问题? Web 服务器如何充当客户端和 CGI 程式间的中介? CGI 程式常常用到哪些环境变量,并简述其含义? 可选题 配置自己的主机为 Web 服务器,在主目录下创建一个 MyfirstWeb文档,设置其为默认网页。 选择自己熟悉的语言编写 CGI 程式,功能:将用户表单输入的信息以追加形式存入文件。
  25. 25. 252525Copyright © 2009, Cameo Communications, Inc. All rights reserved.总 结 主要参考书籍 CGI 编程指南 CGI 技术全面接触 CGI 程序设计指南 进一步学习资料 PerlChina Perl 语言入门 ( 第四版 ) BOA(CGI,ASP,PHP,JAVA)
  26. 26. 262626Copyright © 2009, Cameo Communications, Inc. All rights reserved.Question, Suggestion & DiscussionThanks!

×