php常見面試題之一在php.ini中safe_mode開啓之後對於PHP系統函數有什麼影響呢?

開啓之後,主要會對系統操作、文件、權限設置等方法產生影響,平常項目基本上也用不到這些方法。主要我想還是用來應對webshell吧,減少被人植入webshell所帶來的某些安全問題。

http://www.php.net/manual/zh/ini.sect.safe-mode.php

php safe_mode影響參數
函數名 限制

dbmopen() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。
dbase_open() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。

filepro() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。
filepro_rowcount() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。
filepro_retrieve() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。

ifx_* sql_safe_mode 限制, (!= safe mode)
ingres_* sql_safe_mode 限制, (!= safe mode)
mysql_* sql_safe_mode 限制, (!= safe mode)
pg_loimport() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。
posix_mkfifo() 檢查被操作的目錄是否與正在執行的腳本有相同的 UID(所有者)。

putenv() 遵循 ini 設置的 safe_mode_protected_env_vars 和 safe_mode_allowed_env_vars 選項。請參考 putenv() 函數的有關文檔。 
move_uploaded_file() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。

chdir() 檢查被操作的目錄是否與正在執行的腳本有相同的 UID(所有者)。
dl() 本函數在安全模式下被禁用。
backtick operator 本函數在安全模式下被禁用。
shell_exec()(在功能上和 backticks 函數相同) 本函數在安全模式下被禁用。
exec() 只能在 safe_mode_exec_dir 設置的目錄下進行執行操作。基於某些原因,目前不能在可執行對象的路徑中使用 ..。escapeshellcmd() 將被作用於此函數的參數上。 
system() 只能在 safe_mode_exec_dir 設置的目錄下進行執行操作。基於某些原因,目前不能在可執行對象的路徑中使用 ..。escapeshellcmd() 將被作用於此函數的參數上。 
passthru() 只能在 safe_mode_exec_dir 設置的目錄下進行執行操作。基於某些原因,目前不能在可執行對象的路徑中使用 ..。escapeshellcmd() 將被作用於此函數的參數上。 
popen() 只能在 safe_mode_exec_dir 設置的目錄下進行執行操作。基於某些原因,目前不能在可執行對象的路徑中使用 ..。escapeshellcmd() 將被作用於此函數的參數上。 
fopen() 檢查被操作的目錄是否與正在執行的腳本有相同的 UID(所有者)。
mkdir() 檢查被操作的目錄是否與正在執行的腳本有相同的 UID(所有者)。
rmdir() 檢查被操作的目錄是否與正在執行的腳本有相同的 UID(所有者)。
rename() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與正在執行的腳本有相同的 UID(所有者)。

unlink() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與正在執行的腳本有相同的 UID(所有者)。
copy() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與正在執行的腳本有相同的 UID(所有者)。 (on source and target ) 
chgrp() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。
chown() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。
chmod() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。 另外,不能設置 SUID、SGID 和 sticky bits
touch() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與正在執行的腳本有相同的 UID(所有者)。
symlink() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與正在執行的腳本有相同的 UID(所有者)。 (注意:僅測試 target)
link() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與正在執行的腳本有相同的 UID(所有者)。 (注意:僅測試 target)

apache_request_headers() 在安全模式下,以“authorization”(區分大小寫)開頭的標頭將不會被返回。 
header() 在安全模式下,如果設置了 WWW-Authenticate,當前腳本的 uid 將被添加到該標頭的 realm 部分。
PHP_AUTH 變量 在安全模式下,變量 PHP_AUTH_USER、PHP_AUTH_PW 和 PHP_AUTH_TYPE 在 $_SERVER 中不可用。但無論如何,您仍然可以使用 REMOTE_USER 來獲取用戶名稱(USER)。(注意:僅 PHP 4.3.0 以後有效)

highlight_file(), show_source() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與正在執行的腳本有相同的 UID(所有者)。 (注意,僅在 4.2.1 版本後有效) 
parse_ini_file() 檢查被操作的文件或目錄是否與正在執行的腳本有相同的 UID(所有者)。 檢查被操作的目錄是否與正在執行的腳本有相同的 UID(所有者)。 (注意,僅在 4.2.1 版本後有效)

set_time_limit() 在安全模式下不起作用。 
max_execution_time 在安全模式下不起作用。 

mail() 在安全模式下,第五個參數被屏蔽。

原文地址:http://www.dewen.net.cn/q/265

發佈了14 篇原創文章 · 獲贊 11 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章