iT邦幫忙

2025 iThome 鐵人賽

DAY 29
0
Software Development

《電商修仙術:AI × Magento 開發心法》系列 第 29

[Day 29] 從 Vibe Coding 事件談到 .env 的修仙心法

  • 分享至 

  • xImage
  •  

前言:一場震撼的代價

最近爆紅的 Vibe Coding 事件,震撼了整個開發圈:
有人寫了一個輸入框,讓使用者輸入 key,結果 Vibe Coding 生成的程式碼裡,直接用了「他自己私人的 key」。最後大家都在用那個 key,導致帳單飆破 一萬多塊

這件事提醒我們:

  1. AI 生成程式碼不等於正確
  2. Code Review 不能省
  3. Key、密碼、憑證要妥善管理

今天,我想用這個案例,聊聊開發者日常裡最常見卻常被忽略的修仙心法 —— 把敏感資訊放在 .env


.env:修仙者的儲物袋

在 Magento、Laravel,甚至多數框架裡,我們都會用 .env 來保存:

  • API Key
  • Database 帳密
  • Payment Gateway 金流設定
  • 環境切換(local、staging、production)

這就像修仙者的儲物袋,裡面裝的都是核心法寶,不能隨便曝光

範例:

APP_ENV=production
APP_DEBUG=false

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=magento
DB_USERNAME=magento_user
DB_PASSWORD=secret123

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null

程式碼裡只要呼叫 env('DB_HOST') 就能拿到,不需要硬寫在程式裡。


Magento 實戰:.env vs env.php

在 Magento 2 裡,除了 .env,還有一個常見的檔案叫做 app/etc/env.php
很多新手會搞混,這兩個的差異其實是:

.env

  • 開發框架常用的環境設定檔(Magento 原生沒有,但可以透過模組或習慣補上)。
  • 適合存放 敏感資訊:API Key、Token、第三方金流帳號。
  • 不該進版控,應該要 .gitignore
  • 每台環境(local / staging / production)會有不同值。

env.php

  • Magento 自己的核心設定檔,會在安裝時自動生成。
  • 包含 DB、快取、session 等「系統等級」的配置:
<?php
return [
    'backend' => [
        'frontName' => 'admin'
    ],
    'db' => [
        'connection' => [
            'default' => [
                'host' => '127.0.0.1',
                'dbname' => 'magento',
                'username' => 'magento_user',
                'password' => 'secret123',
                'active' => '1'
            ]
        ]
    ],
    'crypt' => [
        'key' => 'random-generated-key'
    ],
    'cache' => [
        'frontend' => [
            'default' => ['backend' => 'Cm_Cache_Backend_Redis'],
            'page_cache' => ['backend' => 'Cm_Cache_Backend_Redis']
        ]
    ],
];
  • Magento 會直接讀取 env.php,不像 .env 需要額外載入。
  • 這個檔案也不會進版控,因為包含環境特定的敏感資訊。通常會有 env.php.sample 作為範本進版控,各環境依此建立自己的 env.php。

👉 差異總結:

  • .env:跨框架通用,適合存放金鑰、token,避免硬編碼。
  • env.php:Magento 專屬,記錄 DB 與快取等核心設定。

如果要讓 Magento 更安全,金流金鑰/第三方 API key 建議用 .env 管理,再透過 env() 或自訂 config 去讀,不要直接寫死在 env.php


與 Vibe Coding 事件的連結

這次 vibe coding 出包的點,就是沒有把「金鑰管理」做好。
如果當初有 .env

  • 使用者輸入的 key → 存在 .env 或 DB
  • 程式只是去讀,不會「偷用」作者的 key

這也提醒我們,AI 幫我們寫程式可以很快,但一定要 自己檢查 key、憑證是否正確管理


心法:Code Review 的最後防線

AI 可以加速,但 Code Review 是最後的保護罩。

  • 檢查是否有敏感資訊被硬寫
  • 檢查金鑰、憑證是否走 .env
  • 檢查 push 前 .env 是否在 .gitignore

就像修仙者出關前,總要有人幫你檢查靈力是否穩定,否則一劫不過,前功盡棄。


結語:飛升前的提醒

倒數第二天,我們談的不是高深的快取法術,而是最基本的修仙心法 —— 保護你的法寶
.env 是你的儲物袋,env.php 是你的根基大陣,Code Review 是你的護身符。
別讓自己辛苦修煉的成果,因為一個小小的 key 管理失誤,而毀於一旦。

明天,就是最後的大結局。
今天,讓我們記住這句話:

技術的深度,往往藏在最簡單的細節裡。


上一篇
[Day 28] 成果驗證:我們的快取優化 Extension 上線了!
下一篇
[Day 30] 鐵人賽最終篇:修煉結束了,但旅程才剛開始
系列文
《電商修仙術:AI × Magento 開發心法》30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言