駭客若能上傳或注入 PHP 腳本,可能利用 fsockopen、socket_create 等函數發起 UDP Flood 等拒絕服務攻擊,耗盡伺服器出站頻寬。本文說明攻擊腳本特徵,並提供 PHP 環境與 IIS 伺服器的防護設定建議。
惡意腳本通常包含以下特徵:
set_time_limit(0) 移除執行時間限制。ignore_user_abort() 讓腳本在使用者斷線後持續執行。$_GET 直接接收目標 IP、Port、攻擊時長等參數。fsockopen("udp://...")) 並發送垃圾封包。此類攻擊表現為:IIS 啟動後出站頻寬瞬間被佔滿,伺服器持續向外發送封包,不同於 DDoS (大量封包湧入)。
核心策略是禁用危險函數與限制網絡權限:
php.ini 的 disable_functions 加入:
disable_functions = fsockopen, pfsockopen, socket_create, socket_connect, socket_sendto, stream_socket_client, stream_socket_server, exec, system, passthru, shell_exec, proc_open, popen, curl_exec, curl_multi_exec
注意:視應用需求調整,若專案需使用 cURL 或 Socket 連接外部 API,請勿禁用對應函數,改以程式碼層面嚴格驗證參數。
file_get_contents、fopen 等函數存取遠端資源:
allow_url_fopen = Off
allow_url_include = Off
php.ini 中 Socket 擴展未啟用 (前面有分號):
;extension=php_sockets.dll
php.ini 後,必須重啟 IIS (執行 iisreset 或在服務管理員重啟)。*.php) 的執行權限,或移除不必要的模組對應。port=、ip=、time= 等可疑特徵的請求。防範 PHP 被當作跳板發動 DoS,關鍵在於「禁用危險函數」與「網路出站管控」雙重防線。伺服器管理員應依業務需求精簡 PHP 功能,並配合防火牆限制不必要的出站流量,將損害降至最低。