• 《阿古顿巴》藏语版在藏语卫视首播 2019-09-06
  • 晋中市“三同步”推动互联网治理创新 2019-08-27
  • 法媒:研究称美国人常用药物或增加抑郁风险 2019-08-27
  • 宝贝是地名,你能想到这么浪漫的地名在哪儿吗? 2019-08-15
  • 何树山副省长到方圆机电调研指导工作 2019-08-15
  • 十一选五平台哪里啊好: [转载] 用Apache的CGI封装器来加强安全性

    来源:本网整理

    彩票双色球历史开奖结果 www.s9h6.com [转载]?浅析Apache中SSI和CGI的设定方法

    ????由于Apache具有相当高的可移植性,它支持超过30种操作系统,包括Unix、Windows?及Darwin等系统,所以目前在网络上已注册的网域里大部份是使用Apache网页服务器。目前ApacheSoftware?Foundation?正致力于发展现在已进入alpha测试阶段的Apache2.0。在这里,我和大家探讨如何修改服务器选项让服务器能提供简单的动态网页内容,也就是支持CGI程序及?Server-Side?Include(SSI)程序。

      1、准备工作

      首先,我假设你已经安装好Apache而且你的Apache能提供静态网页供浏览。Apache的安装会自动附上静态的HTML测试页,也就是说如果能看到那测试页,就代表你的Apache能正常运作了?;景沧跋碌腁pache仅能提供静态的HTML网页。然而,你可以通过使用??椋╩odules)来提升它的功能。在原始的设定下,Apache的编译会包含mod_include?及?moc_cgi?这两个???。你可以在bin子目录下执行./httpd?-l来查看你的Apache是否装有这两个???。执行的输出会是一长串Apache现在安装的所有???。如果mod_include及moc_cgi?这两个??椴辉谇宓ダ?,你必须重新编译服务器。重新编译时,确定依照如何含括?mod_include、moc_cgi???榈乃得?。此外你还必需有提供实时网页的Server-Side?Includes(相关资料网址://www.oreilly.com/catalog/apache/excerpt/ch10.html)。有了?server-side?includes?(SSI)支持,你就能制作出实时的动态网页。接下来,我先从服务器的SSI支持设定开始,然后进入CGI的编写。

      2、Apache的设定

      首先你必须先找到Apache这个设定文件。Apache的原始安装目录在?Unix下是/usr/local/apache,在Windows下则是?c:\Program?Files\Apache。接着在conf子目录下你会找到httpd.conf?文件。这就是Apache的设定档。这个设定文件是个纯文字文件,所以你可以使用一般的文字编辑器,如vi或Notepad?等,来编辑。首先要注意的是在这个设定档里有些行的起始文字是#符号,这表示这行的文字全为批注。适当地在你的设定档内做批注是个好习惯,因为那帮你记得你曾做了哪些设定以及为什么。

      3、执行?SSI?程序

      开启设定文件并寻找以下这些文字:

        #
        #?To?use?server-parsedHTMLfiles
        #
        #AddType?text/html?.shtml
        #AddHandler?server-parsed?.shtml?

      删除AddType及AddHandler这两行指令前的#符号。AddType指令会要求服务器在传回任何附属档名为.shtml的网页时,以?text或HTML做为传回文件的内容格式。AddHandler?则是用来指示服务器将文件内容送交给mod_include?处理。之后,mod_include?就会判断该如何响应这样的文件。接下来,寻找以下文字:?

      ;

      在这行文字及对应的;?间会有一行选项行(options?line)。原始的设定是:

      Options?Indexes?FollowSymLinks?MultiViews

      在这行尾端加上Includes?,结果看起来会是这样:

      Options?Indexes?FollowSymLinks?MultiViews?Includes

      这是要求Apache在htdocs子目录里执行?server-side?includes?程序。为了让这些修改生效,我们必须重新启动服务器。在?Unix?下重新激活,执行"kill?-HUP?`cat?/usr/local/apache/logs/httpd.pid`"。在?Windows?下,执行"Apache-k?restart"。现在我们来试试刚才的设定结果。在/usr/local/apache/htdocs?目录里新增一个文件?test.shtml。这个文件必须要包含以下程序代码:

      ;?The?file?hello.txt?is?;?long?and?it?was?last?modified?on?;?

      这段?SSI?程序会去读取一个称为?hello.txt?文件,并将该文件的大小以及最近一次的修改日期输出到网页上。显然的,我们还必须在?htdocs?目录下新增这个hello.txt?文件。在我的hello.txt?文件里只有一行文字:HOW?ARE?YOU!。完成新增这些文件后,打开你惯用的浏览器并开启//localhost/test.shtml网页。如果你服务器的安装并不是通过root用户,你可能必须改为开启//localhost:8080/test.shtml。之后将得到如下结果:

      HOW?ARE?YOU!?The?file?hello.txt?is?1k?bytes?long?and?it?was?last?modified?on?Wednesday,?02-Aug-2000?20:18:28?PDT

      另外一种可以激活支持SSI程序的方法称为XbitHack设定(相关资料网址://www.apache.org/docs/mod/mod_include.html#xbithack?)。这个方法的由来是当你将文本文件的使用者可执行位(user-executable?bit)设为可执行状态后,Apache会将那些文件视为?SSI?程序文件。
        要激活这样的功能必须将以下指令(directive)放在所有目录的?.htaccess?文件里:XbitHack?status?on?(or?full)?status?的值可以设为on?、off?或是full。on?的设定会强制服务器将所有使用者可执行的文件视为SSI项。Off则使服务器完全忽略使用者可执行的设定状态。若是设定为Full,服务器会视所有使用者可执行档为SSI项,同时也会检查组可执行(group-executable?bit)。如果组可执行项设定为可执行时,传回header的last?modified?time的值就会被设定为该文件最近一次被修改的时间。这样的设定可以让客户端的浏览器及代理服务器(proxy)进行缓存(caching)。不过在使用这样的功能时必须要小心。例如说,如果你的网页有提供轮替式广告看板你就不会想要设定群组可执行位为开启的状态,因为那么做会让第一个下载的广告被快取起来,导致使用者再也看不到其它页的广告。

      4、执行CGI程序

      在Apache原始安装里,cgi-bin子目录下附有两组CGI程序,test-cgi?以及printenv,只不过这两组程序有潜在的安全漏洞。但是由于我们只是要做设定测试,并且我们不会将这样的原始安装设定直接放在主运行服务器(live?server),所以我们还是会激活其中一组CGI程序,看看Apache当初是如何被设定来执行这组程序。最后我们会自己撰写一支简单的CGI程序。

      首先,要确定这组程序是能执行的。进入cgi-bin子目录,确定程序文件被设定为使用者(服务器执行时使用者)可执行以及使用组(服务器执行时使用组)可执行。对?Windows系统来说,这一步应该是非必要的。接着,对服务器要求这样的内容:

      //localhost:8080/cgi-bin/test-cgi

      注意:只有在通过非root使用者进行服务器安装的情况下才需要指定8080端口(port)。这支Apache内建的test-cgi程序会列出CGI程序会存取的变量值。激活CGI支持是设定在httpd.conf设定文件内的ScriptAlias?指令区段。这个指令区段的原始设定值是:

      ScriptAlias?/cgi-bin/?"/usr/local/apache/cgi-bin/"

      这行指令是告诉Apache如果要求的网页路径是以cgi-bin为起始,这些文件可在/usr/local/apache/cgi-bin/?目录下找得到。这行指令同时也告诉Apache要在这个目录下执行文件。在下面我准备了一个会输出"How?are?you!"的简单CGI程序。我将它命名为?how.sh。

        #!/bin/sh
        echo?"Content-type:?text/html"
        echo
        echo?"How?are?you!"?

      修改这个文件的权限使其成为可执行文件并且向你的服务器提出以下的要求:

      //localhost:8080/cgi-bin/how.sh

      虽然这组CGI是采用shell?script来编写,其实它可以用任何适用于该系统的语言来撰写。至于关于CGI程序的撰写如果有机会我会和大家作更深入的探讨。

      结论:

      Apache支持的所有SSI?指令可以在Apachedocumentation?里找到,Apache所有的功能都可以通过设定文件?(config?file)进行调试。在这里我所介绍的仅只是设定文件相关知识的皮毛。设定文件的原始设定有着非常详尽的说明文件,而且每一个系统版本都附有核心??榧氨曜寄?榈乃得魑募?,如果你花些时间在这些文件里摸索,你会找到任何你想要的功能。



  • 本文相关:
  • Tomcat5.0.28下AXIS完全安装手册
  • 日志分析软件awstats的安装使用简易指南
  • Linux防火墙上的Apache反向代理(转载)
  • Apache Server设置虚拟WEB
  • 从Tomcat中得到更多-Tomcat的源码分析[转载]
  • apache mod_rewrite 详解
  • [整合] APACHE2.2.0+tomcat5.5.12+jk1.2.15整和
  • [CU原创]多种分割WebServer日志的方法
  • [资料] Apache2的httpd.conf翻译(一)
  • Apache 设置web 缓存
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 彩票双色球历史开奖结果 - 频道导航
    Copyright © 2017 彩票双色球历史开奖结果 www.s9h6.com All Rights Reserved
  • 《阿古顿巴》藏语版在藏语卫视首播 2019-09-06
  • 晋中市“三同步”推动互联网治理创新 2019-08-27
  • 法媒:研究称美国人常用药物或增加抑郁风险 2019-08-27
  • 宝贝是地名,你能想到这么浪漫的地名在哪儿吗? 2019-08-15
  • 何树山副省长到方圆机电调研指导工作 2019-08-15
  • 彩票打票员教程视频 pk10前三在线计划 赌王里面的扑克玩法 电玩城1比1上下分注册送分 3d试机号的历史开奖对应码 pk10牛牛棋牌游戏下载大全 今晚开什么特马百度知道 云南快乐10分爱彩乐 天津时时彩介绍 贵州快三遗漏数据 月亮是特马打一生动物 麻将连连看 幸运飞艇开奖记录平台 竞彩篮球玩法有几种 11选5的走势图