程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> php 危險函數詳析

php 危險函數詳析

編輯:PHP基礎知識
 

phpinfo()
功能描述:輸出 PHP 環境信息以及相關的模塊、WEB 環境等信息。
危險等級:中

passthru()
功能描述:允許執行一個外部程序並回顯輸出,類似於 exec()。
危險等級:高

exec()
功能描述:允許執行一個外部程序(如 UNIX Shell 或 CMD 命令等)。
危險等級:高

system()
功能描述:允許執行一個外部程序並回顯輸出,類似於 passthru()。
危險等級:高

chroot()
功能描述:可改變當前 PHP 進程的工作根目錄,僅當系統支持 CLI 模式
PHP 時才能工作,且該函數不適用於 Windows 系統。
危險等級:高

scandir()
功能描述:列出指定路徑中的文件和目錄。
危險等級:中

chgrp()
功能描述:改變文件或目錄所屬的用戶組。
危險等級:高

chown()
功能描述:改變文件或目錄的所有者。
危險等級:高

shell_exec()
功能描述:通過 Shell 執行命令,並將執行結果作為字符串返回。
危險等級:高

proc_open()
功能描述:執行一個命令並打開文件指針用於讀取以及寫入。
危險等級:高

proc_get_status()
功能描述:獲取使用 proc_open() 所打開進程的信息。
危險等級:高

error_log()
功能描述:將錯誤信息發送到指定位置(文件)。
安全備注:在某些版本的 PHP 中,可使用 error_log() 繞過 PHP safe mode,
執行任意命令。
危險等級:低

ini_alter()
功能描述:是 ini_set() 函數的一個別名函數,功能與 ini_set() 相同。
具體參見 ini_set()。
危險等級:高

ini_set()
功能描述:可用於修改、設置 PHP 環境配置參數。
危險等級:高

ini_restore()
功能描述:可用於恢復 PHP 環境配置參數到其初始值。
危險等級:高

dl()
功能描述:在 PHP 進行運行過程當中(而非啟動時)加載一個 PHP 外部模塊。
危險等級:高

pfsockopen()
功能描述:建立一個 Internet 或 UNIX 域的 socket 持久連接。
危險等級:高

syslog()
功能描述:可調用 UNIX 系統的系統層 syslog() 函數。
危險等級:中

readlink()
功能描述:返回符號連接指向的目標文件內容。
危險等級:中

symlink()
功能描述:在 UNIX 系統中建立一個符號鏈接。
危險等級:高

popen()
功能描述:可通過 popen() 的參數傳遞一條命令,並對 popen() 所打開的文件進行執行。
危險等級:高

stream_socket_server()
功能描述:建立一個 Internet 或 UNIX 服務器連接。
危險等級:中

putenv()
功能描述:用於在 PHP 運行時改變系統字符集環境。在低於 5.2.6 版本的 PHP 中,可利用該函數
修改系統字符集環境後,利用 sendmail 指令發送特殊參數執行系統 SHELL 命令。
危險等級:高

另外:如無特殊需要,請在安裝編譯php時 加上這個 –disable-cli ,以禁止php支持解析cli命令。

雖然cli在某些方面很方便,但是為安全著想,還是禁止為好。

PHP CLI(SAPI SERVER API) 命令行接口一般會用來做CRON計劃任務或者圖形界面程序 (使用GTK庫)等等,非常強大,可以用它來實現大部分服務器運維的工作。

PHP CLI 例子:
php -f test.php
php -r “echo time();”
php -R as python style

例子二
echo "Hello! PHP Command line!\n";
echo 'php_sapi_name: '. php_sapi_name() ."\n";
echo getcwd() ."\n"; //取得當前腳本路徑
fwrite(STDOUT, 'Inpot Username:');
$name = fgets(STDIN);
echo "Hello, " . trim($name). "! The time is currently ". date("r") . "\n";
die;

PHP命令行接口標准輸入輸出:
#!/usr/bin/php -q
/* Define STDIN in case if it is not already defined by PHP for some reason */
if(!defined(“STDIN”)) {
define(“STDIN”, fopen(‘php://stdin’,'r’))
}
echo “Hello! What is your name (enter below):\n”;
$strName = fread(STDIN, 80); // Read up to 80 characters or a newline
echo ‘Hello ‘ , $strName , “\n”;
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved