id=1 → id=2 訪問他人數據 (缺乏授權檢查)。文章附帶一個 safe 類 (同 ID 149363),存在嚴重問題:
mysql_escape_string。nl2br 位置錯誤導致標簽被誤刪。$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
$action = in_array($_POST['action'], ['add','edit','delete']) ? $_POST['action'] : 'default';
// HTML 內容
echo htmlspecialchars($userInput, ENT_QUOTES | ENT_HTML5, 'UTF-8');
// HTML 屬性
echo '';
// JavaScript 變量
echo '';
// URL 參數
echo '';
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ? AND status = ?");
$stmt->execute([$email, 1]);
// 生成表單
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
echo '';
// 驗證
if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) die('CSRF validation failed');
每個敏感操作必須驗證當前用戶是否擁有對應資源的操作權限,而非僅依賴參數。
GET/POST 傳遞機制本身無安全性可言。**安全 = 輸入驗證 + 業務授權 + 上下文編碼 + 參數化查詢 + CSRF Token + 最小權限**。棄用舊式「萬能過濾類」,擁抱現代框架內置的安全組件。