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

PHP 安全性加固:透過 php.ini 服務端配置防範常見攻擊

     編輯:PHP 綜合知識

核心原則:縱深防禦

程式碼層面輸入驗證、預備語句是第一道防線;php.ini 服務端配置提供第二層保護,即使程式有漏洞也能限制危害範圍。

錯誤處理與資訊洩露防護

; 生產環境關閉錯誤顯示
display_errors = Off
display_startup_errors = Off

; 記錄錯誤至檔案
log_errors = On
error_log = /var/log/php/error.log
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

; 隱藏 PHP 版本資訊
expose_php = Off

安全模式與函數停用 (PHP 5.4+ 安全模式已移除,改用以下)

; 停用高風險函數
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,\
    curl_exec,curl_multi_exec,parse_ini_file,show_source,\
    pcntl_exec,ld,dl,syslog,imap_open,mb_send_mail

; 限制檔案存取路徑 (防目錄遍歷)
open_basedir = /var/www/:/tmp/:/usr/share/php/

; 限制上傳
file_uploads = On
upload_max_filesize = 10M
post_max_size = 10M
max_file_uploads = 20

; Session 安全
session.cookie_httponly = 1
session.cookie_secure = 1          ; 僅 HTTPS
session.use_strict_mode = 1
session.cookie_samesite = Strict
session.gc_maxlifetime = 1440
session.save_path = /var/lib/php/sessions  ; 專用目錄、權限 700

資源限制防 DoS

max_execution_time = 30
max_input_time = 60
memory_limit = 128M
max_input_vars = 1000
post_max_size = 10M

其他關鍵設定

; 禁止遠端檔案包含 (RF)
allow_url_fopen = Off
allow_url_include = Off

; 郵件發送限制
mail.add_x_header = On
mail.log = /var/log/php/mail.log

; 日期時區 (避免警告)
date.timezone = Asia/Taipei

驗證配置生效

補充:程式碼層面必做項目

  • 所有 SQL 使用 預備語句 (PDO/MySQLi)
  • 輸出轉義:htmlspecialchars($str, ENT_QUOTES, 'UTF-8')
  • CSRF Token 驗證 (表單、AJAX)
  • 密碼雜湊:password_hash() / password_verify()
  • 檔案上傳:驗證 MIME、重新命名、存放非公開目錄、禁止執行
  • 定期更新 PHP、擴充、框架至最新安全版本
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved