工程部署
ZodOWASP
安全性 (Security)
安全性不是附加功能,而是開發的基礎。本章將介紹如何在 Nuxt 應用程式中實作輸入驗證、設定安全標頭,並保護您的敏感資料。
資料驗證 (Zod)
永遠不要信任客戶端的輸入。我們推薦使用 Zod 來驗證 API 請求的 Body 與 Query Parameters。
Terminal
pnpm add zod h3-zod在 Server Handler 中使用:
server/api/register.post.ts
import { z } from 'zod'
const userSchema = z.object({
username: z.string().min(3),
email: z.string().email(),
age: z.number().min(18)
})
export default defineEventHandler(async (event) => {
// readValidatedBody 會自動驗證並拋出 400 錯誤
const body = await readValidatedBody(event, (body) => userSchema.parse(body))
return { success: true, user: body }
}) 安全性標頭
設定適當的 HTTP Headers 可以防禦 XSS、Clickjacking 等攻擊。您可以使用 nuxt-security 模組,或在 nuxt.config.ts 中手動設定。
nuxt.config.ts
export default defineNuxtConfig({
routeRules: {
'/**': {
headers: {
'X-Frame-Options': 'SAMEORIGIN',
'X-Content-Type-Options': 'nosniff',
'Referrer-Policy': 'strict-origin-when-cross-origin'
}
}
}
}) 環境變數安全
再次強調,絕對不要將私鑰 (Private Keys) 放入 public runtime config 中。
危險做法 (Don't)
runtimeConfig: {
public: {
// ❌ 這會暴露給瀏覽器!
stripeSecret: 'sk_live_...'
}
}正確做法 (Do)
runtimeConfig: {
// ✅ 僅限伺服器端存取
stripeSecret: 'sk_live_...',
public: {
apiBase: '/api'
}
}