Skip to content

佈景主題

來源:佈景主題架構

需要注意

共 7 項 — 1 高 / 4 中 / 2 低

除錯日誌殘留

  • 位置: functions.php:128-135
  • 說明: 7 行 error_log 將訂單備註內容寫入伺服器日誌,建議自正式環境移除
  • 建議調整: 移除或改為 WP_DEBUG 條件判斷
  • 影響等級:
  • 驗收: 修改完成後重跑掃描,該項目不再出現

SQL 拼接(條件式風險)

  • 位置: functions.php:117
  • 說明: $order_id 未經 $wpdb->prepare() 直接拼入 SQL,但來源為 Woo hook 參數非外部輸入,實際可利用性有限
  • 建議調整: 改用 $wpdb->prepare('SELECT ... WHERE comment_post_ID = %d', $order_id)
  • 影響等級:
  • 驗收: 修改完成後重跑掃描,該項目不再出現

空陣列未防護

  • 位置: functions.php:120
  • 說明: $comments[0] 未檢查陣列是否為空,訂單無備註時可能產生 PHP warning 或中斷流程
  • 建議調整: 加入 if (empty($comments)) return; 防護
  • 影響等級:
  • 驗收: 修改完成後重跑掃描,該項目不再出現

付款方式判斷邏輯脆弱

  • 位置: functions.php:111-141
  • 說明: 用訂單備註字串比對(信用卡/TAIWANPAY/超商代碼)判斷付款方式,金流商調整備註格式時可能不再正確運作
  • 建議調整: 改用 $order->get_payment_method() 取得付款方式 ID
  • 影響等級:
  • 驗收: 修改完成後重跑掃描,該項目不再出現

硬編碼商品名稱與 shipping ID

  • 位置: js/main.js:41-83
  • 說明: includes('預購') includes('團購') 比對商品名稱,使用固定 ID 操作 shipping method
  • 建議調整: 改用商品 tag/category 或 meta 判斷,shipping ID 改為動態取得
  • 影響等級:
  • 驗收: 修改完成後重跑掃描,該項目不再出現

Customizer 效能浪費

  • 位置: functions.php:46-62
  • 說明: 每次 customize_register 都 foreach 所有 theme_mods 重新 set,不必要
  • 建議調整: 移除此段或改為只在特定條件下執行
  • 影響等級:
  • 驗收: 修改完成後重跑掃描,該項目不再出現

購物金解析依賴中文冒號

  • 位置: template-parts/header-v4.php:38
  • 說明: explode(':', $text) 解析 shortcode 輸出,格式變動時可能失效
  • 建議調整: 改用 shortcode 的結構化輸出或正規表達式
  • 影響等級:
  • 驗收: 修改完成後重跑掃描,該項目不再出現

驗收

修改完成後重跑佈景主題掃描,所有高/中風險項目清除。