昨天把CRUD全部接上資料庫後,順手測試才發現一個漏洞:新增時什麼都不輸入,或者只打空白鍵,照樣能新增成功,清單上會出現一行看起來空空的項目。今天補上前後端兩層驗證,堵住這個破綻。
今天做的事
後端這邊,把原本簡單的if(!title)判斷加強:
const title = (req.body.title || '').trim();
if (!title) {
return res.status(400).json({ message: '待辦事項內容不能是空白' });
}
用Thunder Client測試,刻意送出空字串、純空白、甚至完全不帶title欄位這三種情況,確認都會收到400而不是伺服器出錯或靜靜地新增一筆爛資料。
前端也加上同樣邏輯,輸入框空白時按新增會跳出提醒,並且不會真的發出請求,減少無意義的網路流量。
觀察
心得
這次踩的坑讓我理解到一個很基本但容易忽略的觀念:前端看起來正常,不代表背後資料是乾淨的。如果只靠前端擋,繞過前端(例如直接呼叫 API)就能塞入任何奇怪的資料,資料庫裡遲早會累積一堆垃圾資料。信任使用者輸入是後端開發裡最危險的假設之一,這次算是提早體會到這一課。