一些需要禁用的PHP危險函數(disable_functions)
更新時間:2012年02月23日 22:49:46 作者:
有時候為了安全我們需要禁掉一些PHP危險函數,整理如下需要的朋友可以參考下
phpinfo()
功能描述:輸出 PHP 環(huán)境信息以及相關的模塊、WEB 環(huán)境等信息。
危險等級:中
passthru()
功能描述:允許執(zhí)行一個外部程序并回顯輸出,類似于 exec()。
危險等級:高
exec()
功能描述:允許執(zhí)行一個外部程序(如 UNIX Shell 或 CMD 命令等)。
危險等級:高
system()
功能描述:允許執(zhí)行一個外部程序并回顯輸出,類似于 passthru()。
危險等級:高
chroot()
功能描述:可改變當前 PHP 進程的工作根目錄,僅當系統(tǒng)支持 CLI 模式
PHP 時才能工作,且該函數不適用于 Windows 系統(tǒng)。
危險等級:高
scandir()
功能描述:列出指定路徑中的文件和目錄。
危險等級:中
chgrp()
功能描述:改變文件或目錄所屬的用戶組。
危險等級:高
chown()
功能描述:改變文件或目錄的所有者。
危險等級:高
shell_exec()
功能描述:通過 Shell 執(zhí)行命令,并將執(zhí)行結果作為字符串返回。
危險等級:高
proc_open()
功能描述:執(zhí)行一個命令并打開文件指針用于讀取以及寫入。
危險等級:高
proc_get_status()
功能描述:獲取使用 proc_open() 所打開進程的信息。
危險等級:高
error_log()
功能描述:將錯誤信息發(fā)送到指定位置(文件)。
安全備注:在某些版本的 PHP 中,可使用 error_log() 繞過 PHP safe mode,
執(zhí)行任意命令。
危險等級:低
ini_alter()
功能描述:是 ini_set() 函數的一個別名函數,功能與 ini_set() 相同。
具體參見 ini_set()。
危險等級:高
ini_set()
功能描述:可用于修改、設置 PHP 環(huán)境配置參數。
危險等級:高
ini_restore()
功能描述:可用于恢復 PHP 環(huán)境配置參數到其初始值。
危險等級:高
dl()
功能描述:在 PHP 進行運行過程當中(而非啟動時)加載一個 PHP 外部模塊。
危險等級:高
pfsockopen()
功能描述:建立一個 Internet 或 UNIX 域的 socket 持久連接。
危險等級:高
syslog()
功能描述:可調用 UNIX 系統(tǒng)的系統(tǒng)層 syslog() 函數。
危險等級:中
readlink()
功能描述:返回符號連接指向的目標文件內容。
危險等級:中
symlink()
功能描述:在 UNIX 系統(tǒng)中建立一個符號鏈接。
危險等級:高
popen()
功能描述:可通過 popen() 的參數傳遞一條命令,并對 popen() 所打開的文件進行執(zhí)行。
危險等級:高
stream_socket_server()
功能描述:建立一個 Internet 或 UNIX 服務器連接。
危險等級:中
putenv()
功能描述:用于在 PHP 運行時改變系統(tǒng)字符集環(huán)境。在低于 5.2.6 版本的 PHP 中,可利用該函數
修改系統(tǒng)字符集環(huán)境后,利用 sendmail 指令發(fā)送特殊參數執(zhí)行系統(tǒng) SHELL 命令。
危險等級:高
禁用方法如下:
打開/etc/php.ini文件,
查找到 disable_functions ,添加需禁用的函數名,如下:
phpinfo,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen
功能描述:輸出 PHP 環(huán)境信息以及相關的模塊、WEB 環(huán)境等信息。
危險等級:中
passthru()
功能描述:允許執(zhí)行一個外部程序并回顯輸出,類似于 exec()。
危險等級:高
exec()
功能描述:允許執(zhí)行一個外部程序(如 UNIX Shell 或 CMD 命令等)。
危險等級:高
system()
功能描述:允許執(zhí)行一個外部程序并回顯輸出,類似于 passthru()。
危險等級:高
chroot()
功能描述:可改變當前 PHP 進程的工作根目錄,僅當系統(tǒng)支持 CLI 模式
PHP 時才能工作,且該函數不適用于 Windows 系統(tǒng)。
危險等級:高
scandir()
功能描述:列出指定路徑中的文件和目錄。
危險等級:中
chgrp()
功能描述:改變文件或目錄所屬的用戶組。
危險等級:高
chown()
功能描述:改變文件或目錄的所有者。
危險等級:高
shell_exec()
功能描述:通過 Shell 執(zhí)行命令,并將執(zhí)行結果作為字符串返回。
危險等級:高
proc_open()
功能描述:執(zhí)行一個命令并打開文件指針用于讀取以及寫入。
危險等級:高
proc_get_status()
功能描述:獲取使用 proc_open() 所打開進程的信息。
危險等級:高
error_log()
功能描述:將錯誤信息發(fā)送到指定位置(文件)。
安全備注:在某些版本的 PHP 中,可使用 error_log() 繞過 PHP safe mode,
執(zhí)行任意命令。
危險等級:低
ini_alter()
功能描述:是 ini_set() 函數的一個別名函數,功能與 ini_set() 相同。
具體參見 ini_set()。
危險等級:高
ini_set()
功能描述:可用于修改、設置 PHP 環(huán)境配置參數。
危險等級:高
ini_restore()
功能描述:可用于恢復 PHP 環(huán)境配置參數到其初始值。
危險等級:高
dl()
功能描述:在 PHP 進行運行過程當中(而非啟動時)加載一個 PHP 外部模塊。
危險等級:高
pfsockopen()
功能描述:建立一個 Internet 或 UNIX 域的 socket 持久連接。
危險等級:高
syslog()
功能描述:可調用 UNIX 系統(tǒng)的系統(tǒng)層 syslog() 函數。
危險等級:中
readlink()
功能描述:返回符號連接指向的目標文件內容。
危險等級:中
symlink()
功能描述:在 UNIX 系統(tǒng)中建立一個符號鏈接。
危險等級:高
popen()
功能描述:可通過 popen() 的參數傳遞一條命令,并對 popen() 所打開的文件進行執(zhí)行。
危險等級:高
stream_socket_server()
功能描述:建立一個 Internet 或 UNIX 服務器連接。
危險等級:中
putenv()
功能描述:用于在 PHP 運行時改變系統(tǒng)字符集環(huán)境。在低于 5.2.6 版本的 PHP 中,可利用該函數
修改系統(tǒng)字符集環(huán)境后,利用 sendmail 指令發(fā)送特殊參數執(zhí)行系統(tǒng) SHELL 命令。
危險等級:高
禁用方法如下:
打開/etc/php.ini文件,
查找到 disable_functions ,添加需禁用的函數名,如下:
phpinfo,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen
相關文章
PHP連接MSSQL時nvarchar字段長度被截斷為255的解決方法
這篇文章主要介紹了PHP連接MSSQL時nvarchar字段長度被截斷為255的解決方法,可通過CAST數據類型轉換來解決,是非常實用的技巧,需要的朋友可以參考下2014-12-12PHP實現(xiàn)的memcache環(huán)形隊列類實例
這篇文章主要介紹了PHP實現(xiàn)的memcache環(huán)形隊列類,實例分析了基于memcache實現(xiàn)環(huán)形隊列的方法,涉及memcache緩存及隊列的相關技巧,需要的朋友可以參考下2015-07-07