不要使用預設配置檔案欄位
當新使用者註冊時,預設新增一個名為 profile
的誘人現有欄位。此欄位歷來用作使用者特定資料的暫存區 - 可能是其影象頭像,名稱,介紹文字等。因此,每個使用者的 profile
欄位可由該使用者從客戶端自動寫入。它也會自動釋出給該特定使用者的客戶端。
事實證明,預設情況下可以寫入欄位而不會使其顯得非常明顯可能不是最好的主意。有很多關於新的 Meteor 開發者在 profile
上儲存諸如 isAdmin
等欄位的故事……然後惡意使用者可以隨時輕鬆地將其設定為 true,從而使自己成為管理員。即使你不關心這一點,讓惡意使用者在你的資料庫中儲存任意數量的資料也不是一個好主意。
而不是處理這個領域的細節,完全忽略它的存在可能會有所幫助。只要你拒絕來自客戶端的所有寫入,你就可以安全地執行此操作:
// Deny all client-side updates to user documents
Meteor.users.deny({
update() { return true; }
});
即使忽略配置檔案的安全隱患,將所有應用程式的自定義資料放在一個欄位上也不是一個好主意。Meteor 的資料傳輸協議不會對欄位進行深度巢狀,因此最好將物件展平為文件中的許多頂級欄位。