1<?
php2
ini_set("
safe_mode",
true);3
?>
表 42-2. 安全模式限制函式
函式名限制
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(所有者)。 (onsource
andtarget
)
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()在安全模式下,第五個引數被遮蔽。(注意,僅自 php 4.2.3 起受影響)
??
前幾天看公司面試題的時候有看到這樣的題目,有一些函式還是能記得的,今天剛好查了一下手冊,在這裡記下一筆
php安全設定 禁用危險函式
在 php.ini 中找到 disable functions 這一行,在其後面新增需要禁止的危險函式名,以英文逗號分隔 disable functions phpinfo,set time limit,system,exec,shell exec,passthru,proc open,proc c...
PHP中禁用cookie後的session
我們知道當客戶端瀏覽器把cookie禁掉後,伺服器端的session是沒有辦法正常使用的。因為伺服器端的session是通過sessionid來區分不同使用者的session的,而這個sessionid就是通過客戶端的cookie傳遞到伺服器端的,更嚴格地說,因為在php使用session star...
PHP安全程式設計之PHP的安全模式
php的safe mode選項的目的是為了解決本小節前後所述的某些問題。但是,在php層面上去解決這類問題從架構上來看是不正確的,正如php手冊所述 當安全模式生效時,php會對正在執行的指令碼所讀取 或所操作 檔案的屬主進行檢查,以保證與該指令碼的屬主是相同的。雖然這樣確實可以防範本章中的很多例子...