Lompat ke konten
Rahman FakhruDiskusi proyek

Pelajaran 15 / 17

Keamanan: validasi & otorisasi di server

Dua kebiasaan yang tidak boleh ditawar 1. Validasi argumen dengan v. di SETIAP fungsi publik — jangan percaya input client. 2. Cek siapa pemanggilnya auth di awal handler sebelum membaca/menulis data orang. export const

#Dua kebiasaan yang tidak boleh ditawar

  1. Validasi argumen dengan v.* di SETIAP fungsi publik — jangan percaya input client.

  2. Cek siapa pemanggilnya (auth) di awal handler sebelum membaca/menulis data orang.

    export const hapusCatatan = mutation({ args: { id: v.id("catatan") }, handler: async (ctx, args) => { const userId = await getAuthUserId(ctx); // siapa dia? if (!userId) throw new Error("Harus login"); const row = await ctx.db.get(args.id); if (row?.pemilik !== userId) throw new Error("Bukan milikmu"); await ctx.db.delete(args.id); }, });

Tampilan boleh menyembunyikan tombol, tapi KEAMANAN sesungguhnya selalu di server. Platform ini pun dibangun dengan aturan itu.