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() = kolom user_id di 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

AreaStatusMitigasi / Catatan
Enkripsi at-rest databaseDitahanMenunggu keputusan pengelolaan kunci (KMS/HSM vs application-level). Supabase managed encryption aktif tapi kunci tidak dikontrol pengguna.
CSP script-src inlineSebagianNext.js inject inline script untuk tema anti-kedip. Nonce per-request mengikuti pola aplikasi bila diputuskan.
Subresource Integrity (SRI) untuk CDNBelumNext.js static assets di-host Vercel (trusted origin). SRI bisa ditambah bila kebijakan butuh defense-in-depth.
Security headers di marketing siteDasar sajaMarketing site statis tidak butuh CSP ketat seperti aplikasi. Bisa ditingkatkan bila domain final & analytics dipasang.
Dependency auditBersihnpm 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.
← Kembali ke Beranda