防止跳出web目錄
只允許你的PHP腳本在web目錄里操作,針對Apache,還可以修改httpd.conf文件限制PHP操作路徑。
例如:php_admin_value open_basedir(將用戶可操作的文件限制在某目錄下) web目錄。
在Linux系統中web根目錄有個.user.ini文件,修改該文件與修改httpd.conf文件效果一樣。
.user.ini文件文檔介紹:
自 PHP 5.3.0 起,PHP 支持基於每個目錄的 .htaccess 風格的 INI 文件。此類文件僅被 CGI/FastCGI SAPI 處理。此功能使得 PECL 的 htscanner 擴展作廢。如果使用 Apache,則用 .htaccess 文件有同樣效果。
除了主 php.ini 之外,PHP 還會在每個目錄下掃描 INI 文件,從被執行的 PHP 文件所在目錄開始一直上升到 web 根目錄($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被執行的 PHP 文件在 web 根目錄之外,則只掃描該目錄。
在 .user.ini 風格的 INI 文件中只有具有 PHP_INI_PERDIR
和 PHP_INI_USER
模式的 INI 設置可被識別。
防止PHP木馬執行webshell
第一種:打開safe_mode。
第二種:在PHP.ini中設置d isable_functions = passthru,exec,shell_exec ,system。
防止PHP木馬讀寫文件目錄
在PHP.ini中設置
disable_functions=fopen ,mkdir ,chmod,unlink,dir,fread,fclose,fwrite,file_exists,closedir,is_dir,readdir,open_dir,fileperms(取得文件權限),delfile,copy。
到此為止在Linux環境下沒什么問題了,但在win下,Apache默認運行system權限
解決方法:
給web目錄設置權限。
使Apache以另一種身份運行。