原文出處:https://xz.aliyun.com/t/2557
本文將深入研究 preg_replace /e 模式下的程式碼執行問題,其中包括 preg_replace 函數的執行過程分析、正則表示式分析、漏洞觸發分析。
文章圖片來源:https://xz.aliyun.com/t/2557
前言引用來源:https://xz.aliyun.com/t/2557
-------------------
如果你認同支持我們每日分享的文章的話,請幫我們按個讚並且點擊追蹤「搶先看」,這樣就可以快速獲得最新消息囉!
您的分享及點讚,是我們最大的動力來源。
https://www.facebook.com/LonelyPoPo/
波波觀點:preg_replace 代碼執行是舊程式常見高風險點
preg_replace 與代碼執行的風險,常見於舊版 PHP 使用 /e 修飾符或把使用者輸入混入替換邏輯。這類漏洞通常藏在歷史程式碼、外掛、模板引擎或自製過濾函式中。即使新版 PHP 已移除部分危險行為,舊站遷移與相容性修補時仍需要特別審計。
代碼審計方向
- 搜尋 preg_replace、create_function、eval、assert 與動態函式呼叫。
- 確認 pattern、replacement 或 subject 是否能被使用者直接或間接控制。
- 檢查舊版 PHP 相容程式、第三方外掛與歷史備份是否仍在服務中。
- 加入惡意輸入測試,確認錯誤處理與輸出編碼不會造成二次漏洞。
修補建議
修補方向是移除可執行語意,改用 preg_replace_callback、明確白名單與安全模板處理。若功能只是文字替換,不應讓替換內容進入 eval 類流程。對舊系統來說,也應建立 PHP 版本升級與相容性測試計畫。
這篇文章後續可加入 PHP 版本差異、漏洞範例與修補前後程式碼。對搜尋 preg_replace 代碼執行、PHP 代碼審計的讀者會更有實務價值。












