TODO-PROD.txt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. (saat sudah di prod)
  2. 1. setel ulang cors dan csrf
  3. 2. buat dokumentasi security
  4. 3. buat dokumentasi banyak-banyak
  5. 4. docker compose --env-file .env -f docker-compose.yml up -d --build
  6. docker compose --profile seed run --rm seed
  7. docker compose --profile seed run --rm seed sh -c "corepack enable && corepack prepare pnpm@10.33.0 --activate && pnpm seed"
  8. -----
  9. @src/payload.config.ts
  10. @src/collections/Users.ts
  11. @src/collections/Posts.ts
  12. @src/collections/Careers.ts
  13. @src/collections/Clients.ts
  14. @src/collections/Media.ts
  15. @src/collections/Gallery.ts (jika ada)
  16. Saya ingin meningkatkan keamanan Backend Payload CMS saya. Tolong audit dan terapkan 3 lapisan keamanan berikut pada file-file di atas.
  17. Jika konfigurasi sudah ada, pastikan nilainya sesuai dengan standar di bawah. Jika belum ada, tolong tambahkan.
  18. ### 1. Access Control (Pada setiap file Collection)
  19. Tolong ubah property `access` agar mengikuti aturan "Public Read, Admin Write" untuk konten umum, dan "Private" untuk user.
  20. A. Untuk Collection Public (`Posts`, `Careers`, `Clients`, `Media`, `Gallery`):
  21. - `read`: `() => true` (Terbuka untuk public/frontend).
  22. - `create`, `update`, `delete`: Hanya boleh Admin (User yang logged in). Gunakan helper: `({ req: { user } }) => Boolean(user)`.
  23. B. Untuk Collection Sensitive (`Users`):
  24. - `read`: Hanya Admin atau User itu sendiri.
  25. - `create`, `update`, `delete`: HANYA Admin. Pastikan tidak ada celah `create: () => true` (Public Registration harus dimatikan).
  26. ### 2. Rate Limiting (Pada `src/payload.config.ts`)
  27. Tambahkan konfigurasi `rateLimit` di dalam `buildConfig`.
  28. - Set `window` ke 15 menit.
  29. - Set `max` limit ke 500 request.
  30. - PENTING: Set `trustProxy: true` (Karena saya deploy di Vercel/Behind Proxy).
  31. ### 3. Brute Force Protection (Pada `src/collections/Users.ts`)
  32. Modifikasi object `auth` pada collection Users untuk mencegah brute force login.
  33. - `lockTime`: 20 menit (dalam milliseconds).
  34. - `maxLoginAttempts`: 5 kali.
  35. - `cookies`: Tambahkan konfigurasi cookie aman:
  36. - `secure`: true (atau logic `process.env.NODE_ENV === 'production'`).
  37. - `sameSite`: 'strict' atau 'lax'.
  38. - `domain`: Ambil dari `process.env.COOKIE_DOMAIN` (opsional, handle jika undefined).
  39. Tolong implementasikan perubahan ini dengan rapi dan jangan menghapus field/config lain yang sudah ada sebelumnya.