Keamanan Produk
Keamanan & Perlindungan Data ThinkMate
Terakhir diperbarui: 19 Oktober 2026
Ringkasan Cepat
🛡️ Autentikasi
Custom scrypt + cookie httpOnly 30 hari. Supabase Auth tidak dipakai. Tidak ada token di localStorage.
🔒 Database
PostgreSQL (Supabase) dengan RLS aktif di 16/16 tabel. Hak REST nol untuk anon/authenticated role.
🔐 API Key AI
Hanya di server (environment variable). Tidak pernah dikirim ke browser/client bundle.
📋 Validasi
Zod di semua endpoint. CSP ketat. Rate limit 12 giliran/menit per user di endpoint AI.
Arsitektur Keamanan
1. Autentikasi & Sesi
- • Kata sandi di-hash dengan scrypt (N=16384, r=8, p=1) — parameter OWASP 2024.
- • Sesi disimpan di cookie
tm_session: httpOnly, Secure, SameSite=Lax, max-age 30 hari. - • Tidak ada refresh token, JWT, atau token di localStorage — mengurangi permukaan serangan XSS.
- • Endpoint login/register:
/api/auth/login,/api/auth/register(Zod validated, rate limited). - • Hapus akun mandiri:
DELETE /api/akun— menuntut kata sandi ulang, cascade otomatis, melaporkan jumlah data dihapus per tabel.
2. Row Level Security (RLS)
- • 16/16 tabel memiliki policy RLS aktif (sejak 2026-09-07).
- • Role
anon&authenticated: hak REST = nol (tidak bisa SELECT/INSERT/UPDATE/DELETE langsung). - • Semua akses data lewat API route server-side yang memverifikasi sesi & ownership.
- • Policy berbasis
auth.uid()= kolomuser_iddi setiap tabel.
3. Penyedia AI Eksternal
- • Multi-provider gratis via protokol OpenAI-compatible: Groq, OpenRouter, Google Gemini.
- • Kunci API hanya di server (env var), tidak pernah ke client bundle.
- • Data percakapan dikirim ke provider yang dipilih untuk inferensi saja.
- • Provider tidak melatih model pada data Anda (sesuai kebijakan masing-masing provider).
- • Tidak ada fine-tuning, embedding, atau penyimpanan model pada data pengguna.
4. Enkripsi & Perlindungan Data
- • Enkripsi in-transit: TLS 1.3 end-to-end (Vercel + Supabase managed).
- • Enkripsi at-rest: Sengaja ditahan (menunggu keputusan pengelolaan kunci yang aman — lihat Privacy Policy §5).
- • Pemisahan data: Data percakapan, profil, memori, dan log terpisah per tabel dengan RLS masing-masing.
- • Tidak ada data pribadi di log: Jejak LLM mencatat provider, model, latensi, token — tanpa isi percakapan.
5. Content Security Policy & Header Keamanan
- •
script-src: 'self' + inline untuk tema anti-kedip (Next.js inline script) — riset nonce per-permintaan bisa mengikuti pola aplikasi. - •
style-src: 'self' 'unsafe-inline' (Tailwind v4 butuh inline untuk @theme). - •
img-src: 'self' data: https: (avatar DiceBear, upload pengguna). - •
object-src: 'none',frame-ancestors: 'none',base-uri: 'self'. - •
Referrer-Policy: strict-origin-when-cross-origin.
6. Rate Limiting & Proteksi DDoS
- • Endpoint AI: jendela geser 12 giliran/menit per user (berbasis session ID).
- • Auth endpoint: rate limit terpisah (lebih ketat).
- • Vercel Edge Network: proteksi DDoS otomatis, WAF managed.
7. Protokol Keselamatan Krisis (Supremacy)
- • Deteksi deterministik sinyal krisis (termasuk 7 pola pasif) di sisi server sebelum panggilan model.
- • Balasan empatik dengan nomor bantuan benar (Indonesia: 119/110/129, internasional: findahelpline.com).
- • Membatalkan seluruh lapis di bawahnya — tidak ada jalur yang bisa melangkahinya (dikunci uji regresi).
8. Disiplin Pengetahuan (Epistemic Discipline)
- • Pemisah tegas: yang tercatat / yang disimpulkan / yang tidak diketahui.
- • Larangan mengarang valuasi, harga, tanggal, statistik, peluang.
- • “Dituntut angka bukan izin mengarang” — Penjaga Angka di 6 jalur non-stream.
- • Evidence Engine: pemisah FACT / INFERENCE / OPINION / ASSUMPTION / UNCERTAIN (roadmap).
Kerentanan Diketahui & Mitigasi
| Area | Status | Mitigasi / Catatan |
|---|---|---|
| Enkripsi at-rest database | Ditahan | Menunggu keputusan pengelolaan kunci (KMS/HSM vs application-level). Supabase managed encryption aktif tapi kunci tidak dikontrol pengguna. |
| CSP script-src inline | Sebagian | Next.js inject inline script untuk tema anti-kedip. Nonce per-request mengikuti pola aplikasi bila diputuskan. |
| Subresource Integrity (SRI) untuk CDN | Belum | Next.js static assets di-host Vercel (trusted origin). SRI bisa ditambah bila kebijakan butuh defense-in-depth. |
| Security headers di marketing site | Dasar saja | Marketing site statis tidak butuh CSP ketat seperti aplikasi. Bisa ditingkatkan bila domain final & analytics dipasang. |
| Dependency audit | Bersih | npm audit --omit=dev: 0 kerentanan pada dependensi produksi (per 2026-10-16). Temuan yang tersisa hanya di alat pengembangan (rantai eslint-config-next) dan tidak ikut terkirim ke situs. |
Laporan Kerentanan (Vulnerability Disclosure)
Kami menghargai peneliti keamanan. Jika Anda menemukan kerentanan, silakan laporkan secara tanggung jawab:
- • Email: xtheoputra@gmail.com (prioritas tinggi, target respons 24 jam)
- • Sertakan: deskripsi, langkah reproduksi, dampak potensial, dan PoC bila memungkinkan.
- • Kami tidak menjalankan bug bounty formal saat ini, tapi akan mengakui kontribusi di halaman ini (dengan izin pelapor).
- • Tidak minta akses data pengguna, tidak eksploitasi lebih dari perlu untuk bukti konsep.
Kepatuhan & Standar
PDP Indonesia (UU No. 27/2022)
Hak akses, koreksi, penghapusan, portabilitas, pembatasan, keberatan — tersedia via halaman Pengaturan aplikasi & email xtheoputra@gmail.com.
GDPR (Referensi)
Prinsip privacy by design, data minimization, purpose limitation, storage limitation — diterapkan sebaik mungkin untuk pengguna global.
OWASP Top 10 (2021/2024)
Mitigasi: A01 Broken Access Control (RLS), A02 Cryptographic Failures (TLS, scrypt), A03 Injection (Zod), A07 Identification Failures (custom auth), A09 Logging Failures (audit log).
SOC 2 / ISO 27001
Belum tersertifikasi. Infrastruktur (Vercel, Supabase) memiliki sertifikasi sendiri. Dokumentasi internal siap bila dibutuhkan.
Pembaruan Keamanan
Perubahan materiil pada arsitektur keamanan akan dicatat di Changelog dan diberitahukan via email/notifikasi aplikasi (bila fitur notifikasi aktif) sebelum berlaku.
Riwayat Keamanan Terbaru
- • 2026-09-07: RLS diaktifkan di 16/16 tabel, hak REST nol untuk anon/authenticated.
- • 2026-08-26: CSP & header keamanan ketat diterapkan di aplikasi.
- • 2026-08-15: Rate limiting endpoint AI (12 giliran/menit per user).
- • 2026-07-20: Migrasi auth dari Supabase Auth ke custom scrypt + httpOnly cookie.