首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 安全配置完整指南:php.ini 核心參數、函數禁用、錯誤控制與系統降權

     編輯:PHP 綜合知識

配置檔位置

手動編譯安裝通常在 /usr/local/apache2/conf/php.ini;套件管理安裝在 /etc/php.ini 或 /etc/php/版本/fpm/php.ini。修改後需重啟 PHP-FPM/Apache。

核心安全參數(php.ini)

指令建議值說明
safe_modeOn啟用安全模式(PHP 5.4 移除,舊版適用),限制危險函數、檔案操作權限。
safe_mode_gidOff開啟時同群組可存取檔案,關閉較嚴格。
safe_mode_exec_dir/tmp/cmd 或 /usr/www安全模式下允許執行程式的目錄,建議指向專用空目錄或網站根目錄。
safe_mode_include_dir/usr/www/include/安全模式下允許 include 的目錄。
open_basedir/usr/www/:/tmp/關鍵:限制 PHP 僅能存取指定目錄,有效防範木馬跨目錄讀寫。
disable_functions見下表禁用危險函數,防 WebShell。
expose_phpOff隱藏 HTTP 標頭 X-Powered-By: PHP/x.x.x,減少資訊洩露。
register_globalsOff必關:防止變量注入(PHP 5.4 移除,舊版必設)。
magic_quotes_gpcOn自動轉義 ' " \ NULL(PHP 5.4 移除,現代用預處理語句替代)。
display_errorsOff生產環境關閉錯誤顯示,避免洩露路徑、SQL。
error_reportingE_ALL & ~E_NOTICE & ~E_DEPRECATED記錄級別,生產環境建議 E_ERROR | E_WARNING | E_PARSE。
log_errorsOn啟用錯誤日誌。
error_log/usr/local/apache2/logs/php_error.log日誌路徑,確保 Apache/PHP-FPM 使用者可寫。

推薦 disable_functions 清單

; 執行命令類
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

; 檔案系統類(視業務需求保留部分)
disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir,rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown

; 資訊洩露類
disable_functions = phpinfo,phpversion,get_cfg_var,ini_get_all,ini_get,ini_set,get_loaded_extensions,get_extension_funcs

系統層降權(Linux/Windows)

MySQL 降權

# 建立無權限帳號
useradd -r -s /sbin/nologin mysqlstart
# 資料目錄授權
chown -R mysqlstart:mysqlstart /data/mysql
# systemd 服務修改 User=mysqlstart
systemctl edit mysqld
# [Service]
# User=mysqlstart
# Group=mysqlstart
systemctl daemon-reload && systemctl restart mysqld

Apache 降權

# 建立專用帳號
useradd -r -s /sbin/nologin apache
# httpd.conf 修改
User apache
Group apache
# 目錄權限精細控制:僅授予必要讀/寫權限

Windows 降權

net user apache ****microsoft /add
net localgroup users apache /del
# 服務屬性 → 登入 → 此帳號 → 輸入 apache 帳密
# 重啟 Apache 服務

總結:防禦深度原則

  1. 程式碼層:預處理語句、輸入驗證、輸出編碼、CSRF Token、權限控制。
  2. PHP 配置層:open_basedir、disable_functions、expose_php=Off、錯誤不顯示只記錄。
  3. 系統層:服務降權、目錄最小權限、防火牆、WAF、定期修補。
  4. 監控層:日誌審計、異常告警、檔案完整性監控(AIDE/Tripwire)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved