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

PHP 木馬防禦實戰:目錄限制、函數禁用與權限降級

     編輯:PHP 相關知識

核心防禦三層次

1. 限制腳本存取路徑 — open_basedir

修改 httpd.conf(Apache)或 php.ini:

php_admin_value open_basedir "/usr/local/apache/htdocs"

效果:腳本嘗試讀寫該目錄外檔案將報錯 open_basedir restriction in effect。

2. 禁用高危函數 — 防 WebShell 執行

在 php.ini 設定 disable_functions:

; 基礎防禦:禁用命令執行
disable_functions = passthru,exec,shell_exec,system

; 進階防禦:同時禁用檔案系統操作
disable_functions = passthru,exec,shell_exec,system,
    fopen,mkdir,rmdir,chmod,unlink,dir,
    fread,fclose,fwrite,file_exists,
    closedir,is_dir,readdir,opendir,
    fileperms,copy,delfile

代價:以檔案為基礎的資料庫(如 SQLite、flat-file CMS)將無法運作,需權衡業務需求。

3. Windows 下 Apache 權限降級

預設 Apache 以 SYSTEM 執行,風險極高。建立低權限帳號:

net user apache fuckmicrosoft /add
net localgroup users apache /del

服務屬性 → 登入 → 選擇此帳號 → 重啟 Apache。進一步可針對目錄設定 ACL,實現最小權限原則。

補充建議

  • 啟用 safe_mode(PHP 5.4+ 已移除,改用上述方案)
  • 定期掃描可寫目錄的異常檔案
  • 搭配 WAF(如 ModSecurity)攔截惡意請求
  • 保持 PHP、擴展、作業系統打上安全補丁

結語

「木馬拿我們沒轍」是相對的,分層防禦才能將風險降至最低。開發階段就應遵循最小權限原則,避免過度依賴 disable_functions 這類事後補丁。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved