公司引進AI怎麼用之『網站資安』AI 幫你寫好程式,上線後誰來顧?從近期資安事件開始
2026-10-25
九黎月
9
PHP 重大漏洞、憑證機構弱金鑰、雲端平台環境變數風險,最近的資安新聞看起來很遠,卻可能就在公司網站背後。這篇整理事件差異,以及使用 AI coding 開發網站的人,可以立即採取的做法,也談平台停止服務時怎麼搬家。
用 AI 寫網站,看到頁面跑起來,真的會很有成就感。但網站能開、登入能用,代表功能正在運作,還不能據此判定依賴套件、平台憑證與存取權限都安全。
2026 年 10 月,PHP、eMudhra、Railway 與 Zeabur 分別公布了不同的資安問題。這些事件沒有證據顯示是同一條攻擊鏈,也不能說是 AI 寫程式造成的。對 AI coding 使用者而言,它們共同提醒了一件事:程式寫完之後,還需要知道它依賴什麼、誰能存取,以及出事時怎麼處理。
1. 最近發生什麼事?先把四件事分清楚
- PHP:執行網站的軟體本身出現漏洞。 10 月 21 日,PHP 發布 8.5.12、8.4.27、8.3.36、8.2.35,修補兩項與記憶體及錯誤處理有關的重大漏洞,特定條件下可讓未登入的攻擊者執行程式。使用 PHP 的網站,要確認伺服器實際版本與供應商修補狀態;更新網頁內容並不等於更新 PHP。PHP Foundation 官方公告
- eMudhra:簽發憑證的私鑰出了問題。 部分中繼憑證的私鑰過弱,可能被用來偽造憑證、冒充網站。這不是所有 HTTPS 加密演算法都失效。Cloudflare 已針對相關服務採取措施,也提醒使用者更新受影響的客戶端;公司要注意的不只有瀏覽器,還有程式、容器與其他服務所用的憑證信任資料。Cloudflare 官方說明
- Railway:平台保存的環境變數可能遭存取。 10 月 21 日的官方公告表示,第三方可能取得部分加密環境變數及其解密內容,建議所有使用者更換平台保存的相關憑證並檢查紀錄。這類變數可能包含 API Key、資料庫密碼或私有映像庫憑證;只修改網站程式,並不能讓已外洩的金鑰失效。Railway 官方公告
- Zeabur:兩次資安事件後,宣布逐步結束營運。 官方 10 月 19 日初步報告指出,10 月事件距離八月事件不到兩個月,攻擊者使用外洩的內部憑證,並讀取平台資料庫中的環境變數。官方要求使用者更換存放於平台的密碼與金鑰,即使八月後已換過。Zeabur 十月事件報告
Zeabur 另於 10 月 17 日宣布停止營運:12 月 1 日起部分服務陸續停用,12 月 31 日所有專用伺服器與共享叢集停止服務。因此,使用者需要同時處理事件影響與服務遷移,不能以為所有服務都能正常跑到年底。官方說明也提到市場變化、系統複雜度,以及安全與維運所需投入,不能把結束營運簡化成單一原因。Zeabur 停止營運公告
所以,看到新聞的第一步,是確認自己的系統用了什麼。沒有使用 PHP,與使用 PHP 的處理方式不同;網站沒有直接使用某家憑證,也不代表它連出去的程式完全不需要更新。
2. AI coding 的第一個習慣:請 AI 畫出系統清單
如果網站是一路跟著 AI 對話做出來的,你可能記得按鈕怎麼改,卻不確定網站部署在哪裡、資料放哪裡、登入靠誰提供。
先請 AI 依專案與設定名稱,整理一份清單:
- 執行環境與版本,例如 Node.js 或 PHP。
- 主要框架、套件與鎖定版本的檔案。
- 部署平台、資料庫與第三方服務。
- 登入機制,以及需要哪些憑證「名稱」。
- 誰負責更新、收到警報後由誰處理。
- 備份放在哪裡、最近一次成功還原是何時,以及平台停用時如何搬遷。
這份清單能幫你對照公告。AI 找不到證據的部分,請它明確標示「未知」,不要根據檔名就宣布沒有風險。
3. 密鑰不要跟著程式一起公開,也不要隨手貼進對話
把正式 API Key 寫在原始碼,再請 AI 幫忙改功能,可能同時讓它進入版本紀錄、對話紀錄與工具輸出。貼一整份 .env 檔,也可能連不相關服務的金鑰一起交出去。
比較好的做法是:
- 提供名稱與遮蔽範例。 例如 DATABASE_URL=〔已遮蔽〕,讓 AI 理解用途,必要時使用公司核准的秘密管理方式。
- 測試與正式環境分開。 開發時使用測試金鑰與測試資料,避免一次誤操作就碰到正式會員資料。
- 權限縮到實際需要。 只需要讀取特定資料的工具,不應因此取得整個帳戶的管理權限。
- 有外洩疑慮就處理金鑰本身。 從聊天或最新程式刪除,不能讓舊金鑰失效;還需要撤銷或輪替,並檢查使用紀錄。
輪替也要安排順序:建立替代憑證、更新需要它的服務、驗證,再撤銷舊憑證;若已有主動濫用等緊急情況,處置順序可能需要先阻斷存取,由負責人依事件決定。這是秘密生命週期管理,不只是把字串換長。OWASP 秘密管理指南
4. 更新要有證據,不要只接受「已經修好了」
請 AI 修改後,要求它交代:改了哪個檔案、實際部署的版本、有沒有測到原本的問題,以及哪些功能還沒驗證。
先在測試環境更新,確認登入、權限與重要流程;正式上線後,再檢查部署紀錄與執行版本。網站首頁回傳正常,不代表登入、資料存取與背景任務也都正常。
套件掃描是有用的檢查之一,但查不到已知漏洞,不能保證程式沒有邏輯錯誤。更新執行環境時,也要確認雲端服務或容器實際採用了新版,而不是只有本機更新。
5. 測試「不能做的事」,才能看見權限問題
登入成功、資料能儲存,是正常流程測試。涉及公司或會員資料時,還要驗證拒絕流程,例如:
- 未登入的人呼叫管理 API,是否真的被伺服器拒絕?
- 一般會員能否藉由更換資料編號,讀到另一位會員的內容?
- 非管理員是否能直接送出管理請求,即使畫面沒顯示那個按鈕?
- 付款失敗或重複通知時,是否會錯誤開通權益?
這些檢查要在自己擁有或取得授權的測試系統進行。AI 可以協助設計測試與整理結果,但不能只靠一句「我檢查過,很安全」作為驗收證據。
6. AI 有工具權限時,操作範圍也要一起設好
會提出程式碼建議的 AI,和能部署、讀資料庫、呼叫管理 API 的 AI,影響範圍不同。
先讓它在測試環境、有限權限下工作。刪除資料、擴大權限、撤銷正式憑證與正式部署等操作,應依公司的審核流程執行。網頁、套件文件或錯誤訊息裡出現的指令,也不等於使用者已授權它照做。
提示詞可以說明工作範圍,但仍要配合工具權限、環境隔離與操作紀錄,不能把一句「請小心」當作技術防護。OWASP AI Agent 安全指南
7. 平台也可能退場:程式碼之外,還要能搬走資料
Zeabur 的例子讓「之後再備份」有了明確期限。對公司而言,網站能否持續營運,也取決於平台停止服務時,能不能在別處重新建立。
可以請 AI 先協助整理搬遷清單,再由負責人驗證:
- 程式碼之外,列出真正的資料。 資料庫、使用者上傳的圖片與附件、自動化工作流程,都可能不在 Git 儲存庫裡。
- 留下部署所需設定。 記錄執行版本、建置方式、排程、網域與 DNS、第三方回呼網址,以及環境變數名稱;機密值透過核准的方式管理。
- 備份放在獨立位置,實際還原一次。 在另一個受控環境確認登入、資料與重要流程能運作,才知道備份是否足夠;只看到匯出檔案存在,還不能證明搬家成功。
- 資安事故與一般搬家分開處理。 若環境可能遭入侵,要依事件指引撤銷受影響憑證、檢查資料與建立乾淨環境,避免把未知程式或持續存取機制一起複製過去。
- 先驗證,再安排流量切換。 確認新環境可用、資料同步與回復方案,再安排正式切換;有持續寫入的訂單或會員資料,還要避免新舊兩邊資料分歧。
以上是搬遷規劃的檢查方向,不是可以直接套用到每個網站的操作指令。AI 能協助找出遺漏項目,實際搬遷仍要依你的服務與事件影響範圍安排。
8. 放在 Cloudflare,就可以放心了嗎?
Cloudflare 可以成為重要的防護層,但仍要分清楚使用方式。
- 網站放在其他平台,前面接 Cloudflare。 WAF 可以攔截部分惡意請求,但原始伺服器若仍能被直接連線,就可能繞過防護。平台內部的憑證或環境變數外洩,也不一定經過網站前面的 WAF,不能靠它阻止。Cloudflare 原站防護說明
- 網站直接部署在 Cloudflare Workers/Pages。 這能減少自行管理伺服器與部分執行環境的工作,Workers 也提供平台隔離機制。但會員權限、密鑰使用與外接資料庫的安全,仍需要依實際架構處理。Workers 安全模型
例如,會員只要更換訂單編號,就能讀到別人的訂單。這種請求可能看起來正常,需要由應用程式檢查存取權限,不能期待平台自動理解公司的業務規則。
Cloudflare 可以減少維運負擔;公司仍要負責程式權限、密鑰管理、資料備份,以及外部服務的安全。
可以複製的提示詞:先產出一份有證據的檢查報告
這段是給 AI coding 助手的工作要求,不是讓你貼入正式密鑰。請在公司核准的開發環境使用,並由平台權限控制它實際能存取的範圍。
【提示詞|複製開始】
請對這個已授權的專案做唯讀安全盤點,先不要修改檔案、部署、更新套件或變更憑證。
- 列出執行環境、框架、依賴套件、部署平台與第三方服務,附上檔案路徑或其他依據;找不到就標示未知。
- 只整理環境變數名稱與用途,不讀取或輸出 .env、私鑰、Token、密碼及正式個資內容。若發現疑似硬編碼密鑰,只回報位置與類型,不重現值。
- 檢查登入、角色權限、資料存取、檔案上傳與付款相關流程,分開列出已確認問題與待驗證疑點。
- 如需讀取敏感資料、聯網查詢或執行指令,先說明必要性、可能傳出的資料與預計操作,等我決定。
- 對每項發現提供影響、證據、建議修正與驗證方式,不要用「沒有發現」推論完全安全。
- 依現有文件盤點資料庫、上傳檔案、備份位置、還原紀錄與平台遷移所需設定;只列名稱與證據,不讀取備份中的正式資料。缺少還原證據就標示尚未驗證。
- 使用繁體中文與數字條列,最後列出目前無法確認的事項。
【提示詞|複製結束】
這是本文整理的工作範本,尚未針對特定專案實測。它能讓檢查要求更明確,無法保證 AI 一定遵守,也不等於完整的滲透測試或資安稽核。
讓 AI 寫得更快,也把交付條件說得更清楚
這些事件讓人看到,風險可能來自程式執行環境、憑證信任鏈或雲端平台,也可能延伸到服務能否持續營運。公司使用 AI coding,可以讓 AI 協助盤點、讀公告、找程式位置與設計測試;負責人則要確認影響、處理順序與交付結果。
下次功能完成時,多留一份紀錄:現在跑哪個版本、密鑰放哪裡、誰能存取、測過哪些拒絕流程,以及出問題要怎麼還原、平台停用時怎麼搬家。這些資料會讓下一次更新與事件處理更有依據。
本文整理截至 2026 年 10 月 22 日的公開公告。事件調查與修補狀態可能持續更新,實際處置請回到供應商最新公告核對