Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > by-pkgid > 05cd670d8a02b2b4a0ffb1756f2e8308 > files > 12315

php-manual-zh-5.2.4-1mdv2008.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>以 CGI 模式安装时</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="PHP 手册"
HREF="index.html"><LINK
REL="UP"
TITLE="安全"
HREF="security.html"><LINK
REL="PREVIOUS"
TITLE="总则"
HREF="security.general.html"><LINK
REL="NEXT"
TITLE="情形一:只运行公开的文件"
HREF="security.cgi-bin.default.html"><META
HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=UTF-8"></HEAD
><BODY
CLASS="chapter"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>PHP 手册</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="security.general.html"
ACCESSKEY="P"
>上一页</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="security.cgi-bin.default.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="chapter"
><H1
><A
NAME="security.cgi-bin"
>章 24. 以 CGI 模式安装时</A
></H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>目录</B
></DT
><DT
><A
HREF="security.cgi-bin.html#security.cgi-bin.attacks"
>可能受到的攻击</A
></DT
><DT
><A
HREF="security.cgi-bin.default.html"
>情形一:只运行公开的文件</A
></DT
><DT
><A
HREF="security.cgi-bin.force-redirect.html"
>情形二:使用 --enable-force-cgi-redirect 选项</A
></DT
><DT
><A
HREF="security.cgi-bin.doc-root.html"
>情形三:设置 doc_root 或 user_dir</A
></DT
><DT
><A
HREF="security.cgi-bin.shell.html"
>情形四:PHP 解释器放在 web 目录以外</A
></DT
></DL
></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="security.cgi-bin.attacks"
>可能受到的攻击</A
></H1
><P
>&#13;     如果不想把 PHP 嵌入到服务器端软件(如 Apache)作为一个模块安装的话,可以选择以
     <ACRONYM
CLASS="acronym"
>CGI</ACRONYM
> 的模式安装。或者把 PHP 用于不同的 CGI
     封装以便为代码创建安全的 chroot 和 setuid 环境。这种安装方式通常会把
     PHP 的可执行文件安装到 web 服务器的 cgi-bin
     目录。CERT 建议书 <A
HREF="http://www.cert.org/advisories/CA-1996-11.html"
TARGET="_top"
>CA-96.11</A
>
     建议不要把任何的解释器放到 cgi-bin 目录。尽管 PHP
     可以作为一个独立的解释器,但是它的设计使它可以防止下面类型的攻击:
    </P
><P
></P
><UL
><LI
><P
>&#13;       访问系统文件:<TT
CLASS="filename"
>http://my.host/cgi-bin/php?/etc/passwd</TT
>
      </P
><P
>&#13;       在 URL 请求的问号(?)后面的信息会传给 CGI
       接口作为命名行的参数。其它的解释器会在命令行中打开并执行第一个参数所指定的文件。
      </P
><P
>&#13;       但是,以 CGI 模式安装的 PHP 解释器被调用时,它会拒绝解释这些参数。
      </P
></LI
><LI
><P
>&#13;       访问服务器上的任意目录:<TT
CLASS="filename"
>http://my.host/cgi-bin/php/secret/doc.html</TT
>
      </P
><P
>&#13;       好像上面这种情况,PHP 解释器所在目录后面的 URL 信息
       <TT
CLASS="filename"
>/secret/doc.html</TT
> 将会例行地传给
       <ACRONYM
CLASS="acronym"
>CGI</ACRONYM
> 程序并进行解释。通常一些 web
       服务器的会将它重定向到页面,如
       <TT
CLASS="filename"
>http://my.host/secret/script.php</TT
>。如果是这样的话,某些服务器会先检查用户访问
       <TT
CLASS="filename"
>/secret</TT
> 目录的权限,然后才会创建
       <TT
CLASS="filename"
>http://my.host/cgi-bin/php/secret/script.php</TT
>
       上的页面重定向。不幸的是,很多服务器并没有检查用户访问
       /secret/script.php 的权限,只检查了
       <TT
CLASS="filename"
>/cgi-bin/php</TT
> 的权限,这样任何能访问
       <TT
CLASS="filename"
>/cgi-bin/php</TT
> 的用户就可以访问
       web 目录下的任意文件了。
      </P
><P
>&#13;       在 PHP 里,编译时配置选项
       <A
HREF="configure.html#configure.enable-force-cgi-redirect"
>--enable-force-cgi-redirect</A
>
       以及运行时配置指令 <A
HREF="ini.core.html#ini.doc-root"
>doc_root</A
> 和
       <A
HREF="ini.core.html#ini.user-dir"
>user_dir</A
>
       都可以为服务器上的文件和目录添加限制,用于防止这类攻击。下面将对各个选项的设置进行详细讲解。
      </P
></LI
></UL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="security.general.html"
ACCESSKEY="P"
>上一页</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>起始页</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="security.cgi-bin.default.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>总则</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="security.html"
ACCESSKEY="U"
>上一级</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>情形一:只运行公开的文件</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>