章 22. 安全模式[2]

[入库:2005年9月19日] [更新:2007年3月25日]

本文简介:

safe_mode_allowed_env_vars string

設置某些環境變數可能是潛在的安全缺口。本指令包含有一個逗號分隔的前綴列表。在安全模式下,用戶只能改變那些名字具有在這裡提供的前綴的環境變數。預定情況下,用戶只能設置以 PHP_ 開頭的環境變數(例如 PHP_FOO = BAR)。

註: 如果本指令為空,PHP 將使用戶可以修改任何環境變數!

safe_mode_protected_env_vars string

本指令包含有一個逗號分隔的環境變數的列表,最終用戶不能用 putenv() 來改變這些環境變數。甚至在 safe_mode_allowed_env_vars 中設置了允許修改時也不能改變這些變數。

open_basedir string

將 PHP 所能打開的文件限制在指定的目錄樹。本指令不受安全模式打開或者關閉的影響。

當一個腳本試圖用例如 fopen 或者 gzopen 打開一個文件時,該文件的位置將被檢查。當文件在指定的目錄樹之外時 PHP 將拒絕打開它。所有的符號連接都會被解析,所以不可能通過符號連接來避開此限制。

特殊值 . 指定了存放該腳本的目錄將被當做基准目錄。

在 Windows 中,用分號分隔目錄。在任何其它系統中用冒號分隔目錄。作為 Apache 模塊時,父目錄中的 open_basedir 路徑自動被繼承。

用 open_basedir 指定的限制實際上是前綴,不是目錄名。也就是說 "open_basedir = /dir/incl" 也會允許連接 "/dir/include" 和 "/dir/incls",如果它們存在的話。如果要將連接限制在僅為指定的目錄,用斜線結束路徑名。例如:"open_basedir = /dir/incl/"。

註: 支援多個目錄是 3.0.7 加入的。

預定是允許打開所有文件。

disable_functions string

本指令允許你基於安全原因禁止某些函式。接受逗號分隔的函式名列表作為參數。 disable_functions 不受安全模式的影響。

本指令只能設置在 php.ini 中。例如你不能將其設置在 httpd.conf

參見 register_globalsdisplay_errorslog_errors

safe_mode 設置為 on,PHP 將檢查當前腳本的擁有者是否和將被文件函式操作的文件的擁有者相匹配。例如:

-rw-rw-r--    1 rasmus   rasmus       33 Jul  1 19:20 script.php 
-rw-r--r-- 1 root root 1116 May 26 18:01 /etc/passwd
執行 script.php
<?php
readfile('/etc/passwd');
?>
如果安全模式被啟動,則將會導致以下錯誤:
Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not 
allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2

本文关键:章 22. 安全模式
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top