基本安全意識
每個工程師必遵守的五條不商量規則
⏱ 預估 ~5 分鐘
01 · 讀一讀
你不用是資安專家。但你絕對要避免造成大部分安全事件的錯誤。
真相是大部分安全事件不是精緻駭客造成。是工程師忘基本造成:密碼留原始碼、使用者輸入沒驗證、該 HTTPS 的 HTTP endpoint。
這五條規則讓你不出事。它們不是可選的 — 是寫別人能信任的程式碼的最低標準。
02 · 讀一讀
記這五條規則。它們涵蓋大部分初階工程師犯的安全錯誤。
重點整理
- 永不 commit 秘密:API key、密碼、token → .env + .gitignore
- 永不信使用者輸入:從表單或 URL 來的東西用前 sanitize
- 永遠用 HTTPS:任何真實的不用 HTTP — 傳輸資料要加密
- 讓相依套件保持更新:定期跑 npm audit 找已知漏洞
- 不要 log 敏感資料:永不 console.log(password) 或 production log token
03 · 讀一讀
你剛拿到要上線前審的 app。我們看你用 cat 跟 grep 能找到幾個安全違反。
04 · 終端機練習
先讀完整原始碼。找任何違反你剛學的五安全規則的東西。
(本節為互動練習,請啟用 JavaScript 體驗)
05 · 終端機練習
現在用 grep 一次找所有可能安全違反 — 任何像密碼、秘密、key 的東西。
(本節為互動練習,請啟用 JavaScript 體驗)
06 · 看程式碼
下面是修好版本長什麼樣。比對你看的 — 每個安全違反都處理。
app.js — 安全問題修好
require('dotenv').config();
const express = require('express');
const app = express();
// Secrets from .env, not hardcoded
const API_SECRET = process.env.API_SECRET;
app.post('/login', (req, res) => {
// POST body, not URL query string
const { username, password } = req.body;
console.log('Login attempt:', username);
// No password logged! Compare with hashed version in DB
});
app.listen(process.env.PORT || 3000, () => {
console.log('Server running');
// No secrets logged!
});
修法:(1) 秘密透過 dotenv 移到 .env、(2) Login 用 POST(body)不是 GET(URL)、(3) 只 log username — 永遠不 log 密碼、(4) 沒寫死密碼比對 — 用適當驗證系統跟 hash 密碼、(5) 啟動 log 不洩秘密。
07 · 選擇題
下面哪個永遠不該 commit 到 git?
- package.json
- 有 API key 的 .env 檔
- index.html
- README.md
08 · 填空
檢查你專案相依套件已知漏洞,跑 npm _____。
⚠ 完整互動體驗需要 JavaScript。請啟用 JavaScript 後重新整理。
※ 本站為獨立繁中教學專案,非 Anthropic 官方產品。Claude™ 為 Anthropic, PBC 商標。