Keamanan
Halaman ini menjelaskan perlindungan yang benar-benar diterapkan di aplikasi ini, dan batas-batasnya secara jujur.
Yang sudah diterapkan
- Header keamanan: HSTS, X-Content-Type-Options, X-Frame-Options DENY, Referrer-Policy, Content-Security-Policy, dan Permissions-Policy.
- Kunci hanya di server: kunci service-role Supabase dan token Cloudflare hanya dibaca dari variabel lingkungan di server. Keduanya tidak pernah dikirim ke browser dan tidak pernah dicatat di log.
- Validasi server: domain dan email divalidasi lagi di server, bukan hanya di formulir. Alamat IP, localhost, dan format domain yang tidak valid ditolak.
- Alamat IP tidak disimpan mentah: untuk pencatatan event, IP diubah menjadi hash SHA-256. IP mentah tidak disimpan di tabel domain_events.
- Rate limit dasar: maksimal 10 permintaan kirim domain per IP setiap 10 menit, dengan respons 429 jika melebihi.
- RLS Supabase: tabel connected_domains dan domain_events mengaktifkan RLS tanpa kebijakan publik, sehingga akses langsung dengan kunci anon diblokir secara desain. Hanya server dengan service-role yang membaca dan menulis.
- Token verifikasi tidak diekspos: endpoint baca domain tidak mengembalikan verification_token.
- Worker tempmail lama tidak diubah: aplikasi ini hanya membaca Worker verifikasi mail-domain-connect, bukan tempmail-worker.
Batasan yang perlu diketahui
- Belum ada login/auth: siapa pun yang tahu nama domain bisa mengecek statusnya. Jangan anggap halaman ini sebagai bukti kepemilikan tanpa verifikasi tambahan.
- Belum ada Turnstile/CAPTCHA: perlindungan bot masih mengandalkan rate limit dasar.
- Rate limit per instance: karena disimpan di memori, limit ini reset saat redeploy atau restart, dan tidak berlaku lintas instance jika aplikasi dijalankan di banyak instance.
- CSP memakai unsafe-inline untuk skrip dan gaya: ini diperlukan untuk kompatibilitas Next.js, jadi CSP di sini bukan perlindungan maksimal.
- Tidak ada klaim sertifikasi: aplikasi ini tidak mengklaim sertifikasi SOC 2, ISO 27001, atau audit keamanan pihak ketiga, karena memang belum ada.
Jika Anda menemukan celah, hentikan penggunaan untuk domain sensitif dan laporkan ke pemilik sistem sebelum melanjutkan.