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

PHP 單檔案線上代碼編輯器:功能完整的開發利器

     編輯:PHP 綜合知識

專案特色

一個單一 PHP 檔案即可部署的線上代碼編輯器,整合 Ace Editor,支援語法高亮、檔案樹瀏覽、建立/刪除/重命名/預覽檔案、密碼保護、Session 管理等完整功能。

核心架構

單檔案自修改機制

  • 首次訪問自動引導設定密碼(MD5 + Salt)
  • 密碼寫入自身檔案:preg_replace('#\$pwd = false;#', '$pwd = "'.$hash.'";', $code)
  • 重置功能可重命名自身檔案防止路徑猜測

認證與 Session

function is_logged() {
    return isset($_SESSION['pwd']) && defined('DEFAULT_PWD') 
        && $_SESSION['pwd'] === DEFAULT_PWD;
}

AJAX 多功能端點

單一入口透過 $_POST action 分派:

  • file:讀取檔案內容(回傳內容、語法模式)
  • dir:獲取目錄樹 HTML
  • action=save_file:儲存檔案
  • del:刪除檔案/目錄(遞迴)
  • create:新建檔案/目錄
  • rename:重命名

前端技術棧

  • Ace Editor:專業代碼編輯器 (Monokai 主題、自動換行、Ctrl+S 儲存)
  • jQuery:AJAX、DOM 操作、右鍵選單
  • AlertifyJS:美觀的提示/確認/輸入對話框
  • Base64 內嵌圖標:目錄/檔案/載入中圖標零請求

安全性深度分析與加固

高風險問題

  • 任意檔案讀寫刪除:無路徑限制,可存取伺服器任意位置
  • 路徑遍歷:$_POST['file'] 直接拼接 dirname(__FILE__),../../etc/passwd 可突破
  • 無 CSRF 保護:AJAX 端點易受跨站請求偽造
  • 密碼儲存:MD5 無 Salt 強度不足,寫入自身檔案權限風險

必須修復措施

// 1. 路徑限制在專案根目錄
$root = realpath(__DIR__ . '/project_root');
$requested = realpath($root . $_POST['file']);
if (strpos($requested, $root) !== 0) die('Access denied');

// 2. CSRF Token
session_start();
if (empty($_SESSION['csrf'])) $_SESSION['csrf'] = bin2hex(random_bytes(32));
if ($_POST['csrf'] !== $_SESSION['csrf']) die('Invalid CSRF token');

// 3. 密碼雜湊升級
$hash = password_hash($password, PASSWORD_ARGON2ID);
password_verify($input, $hash);

部署建議

  • 僅在開發/測試環境使用,生產環境嚴禁
  • 放置於非 Web 可訪問目錄,透過 SSH 通道或 VPN 訪問
  • 搭配 .htaccess/IP 白名單/基本認證雙重保護
  • 定期審計存取日誌

現代替代方案

  • code-server:VS Code 瀏覽器版,功能最完整
  • PHPStorm 遠程開發:IDE 級體驗
  • GitHub Codespaces / Gitpod:雲端開發環境
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved