入侵後安全強化(三層防護)+ 文章格式修正
背景
銜接 6/24 首頁入侵事件的後續待辦,完成三層安全防護建置與其他安全強化項目。
三層安全防護
- Cloudflare: WAF、DDoS 防護、Bot Fight Mode、Security Headers
- All In One Security (AIOS): Hide Login、Login Lockout、2FA、CAPTCHA、檔案監控、6G Firewall
- WPScan: 完成漏洞偵測掃描
修復項目
-
檔案權限全部從
0777修正為正確權限值 - 移除有已知高危漏洞的外掛:ACF PRO(9.9/10 嚴重)、Rank Math PRO(無修補版本)
- GreenShift 更新到 13.1.1
- 刪除預設 WordPress 暴露檔案
安全分數變化
- AIOS 安全分數:120 → 330 / 545,黑名單狀態全部乾淨
下次維護建議
| 頻率 | 動作 |
|---|---|
| 每月 | Sucuri SiteCheck 掃描 |
| 每月 | WPScan 重新掃描 |
| 有空 | Database Prefix 修改(先備份) |
| 有空 | SPF/DKIM Email 防偽造設定 |
文章格式修正
Post 5679 與 5678 用 convert.js 轉換為 Greenshift 格式並推回,保持草稿狀態待人工確認排版。
通用網站專案工作流最終版完成
背景
以「墨流し(Suminagashi)」日式 Hero Section 為實測範例,把 Stitch MCP 設計生成正式串進 greenlight-vibe 的轉換流程,確認從生成到上線的完整路徑可行,作為之後所有網站專案的標準作業流程。
遇到的問題
-
customJs 不會在前台執行:
透過 REST API 寫入不會觸發同步,需額外呼叫
greenshift/v1/update-custom-js - Class 名稱衝突: 同一頁面兩組 CSS 互相覆蓋,改用獨立前綴解決
- Shader 編譯失敗: 函式型別不符導致 fragment shader 失敗,必須實際執行測試
- CSS 推送沒有套用: post_content 與 _gspb_post_css 必須分開推送
最終工作流(標準作業程序)
- Stitch 生成 → 截圖預覽確認 → 取得完整程式碼
- 含 WebGL/Canvas 邏輯務必實際執行測試一次
- convert.js 轉換為 Greenshift Blocks
- 三件套同步推送:content、_gspb_post_css、gspb_block_js
- 清快取驗證
首頁入侵事件處理完整記錄
index.php 被植入惡意 PHP Cloaking 後門,造成網站 500 錯誤。推測透過 wp-file-manager 外掛已知漏洞(CVE-2020-25213)入侵。
處理步驟
- 移除 index.php 惡意程式碼,恢復網站正常
- 移除 wp-file-manager 外掛
- 安裝 Shield Security + Wordfence
- Wordfence 完整掃描 24,005 個檔案,確認只有一個檔案被篡改
- Google Search Console 確認無安全性問題標記
- 封鎖惡意網域於防火牆黑名單
TOC 錨點修復 + 自動化腳本
- Post 4993 轉換為 Greenshift 格式
- Post 5611 sidebar display:none 根治:從 block content 移除 LAYOUT OVERRIDE,同步更新 CSS meta
- Greenshift TOC JS 無法處理非 ASCII 的 id,將 Posts 5611、5325、4811 的非 ASCII anchor 全部替換為 ASCII slug
- 建立 fix-anchors.js 自動化腳本
文章列表排序修正
post 819 被設為 sticky(置頂)導致列表排序不正確。透過 REST API 將 sticky 改為 false,文章列表現在按日期新到舊排列。
新增頁面:Case Study + About + Rank Math FAQ 全域化
- 安裝 Site Kit by Google,整合 Search Console、Analytics 數據至 WP 後台
- Case Study 頁面(page 5572):「用 Claude AI 打造網站的完整過程」
- About 頁面(page 5576):「關於我 | About Bencent」
- Rank Math FAQ Block 全域樣式:圓角 12px、橘色左邊框,寫入 Greenshift Additional CSS 全域生效
首頁改版 v2:三大核心服務 + Fluent Form 整合
- Services 區塊改版(4卡 → 3卡):新增「極致網頁效能優化」
- Articles 區塊新增說明段落
- CTA 表單:嵌入 Fluent Forms formId 3(真實可送出)取代舊版靜態 HTML
首頁設計稿(page 5482):文章卡片動畫 + CTA 重設計
- SVG 動畫改用 SMIL animateTransform,@keyframes 必須放在 dynamicGClasses[].css
- CTA 區塊重設計:暖橘漸層背景 + 右欄白色表單卡片
Header Blob 與毛玻璃效果(Day 4)
- RUCSS 剔除 keyframes 問題,改用 @keyframes headerBlobFixed,起始從螢幕外滑入
- 毛玻璃效果:backdrop-filter: saturate(160%) blur(18px),sticky 時加強至 blur(22px)
Header 問題修正(Day 3)
- 水平捲動:加入 overflow-x: hidden !important
- 非首頁 Sticky Header:正確選擇器修正
- 手機選單亂碼:PowerShell ConvertTo-Json 損毀中文,改用瀏覽器 JS fetch() PUT 還原
- Admin bar 空隙:正確選擇器 body.admin-bar:not(.home)
頁面改版與手機版修正(Day 2)
- Header 陰影:改用 box-shadow 直接加在 .gs-sticky-header
- Blob 容器:加獨立 overflow:hidden 容器,blob 與 nav 互不影響
- 隱私權政策頁面(Page ID: 3):greenlight-vibe + convert.js 重設計
- Footer 手機版 Copyright block 換行問題修正
功能建置與 Bug 排查(Day 1)
- 文章列表 Accordion Hover 效果(CSS hover 觸發,無需 JavaScript)
- SMTP 郵件發送:安裝 FluentSMTP,串接 Brevo,確認測試信件成功
- 聯絡表單:安裝 Fluent Forms,建立 Contact 表單與 /contact 頁面
- 行動版導覽列覆蓋問題(Pending):手機版 .is-menu-open 只顯示 73px,問題待查