Beranda Keamanan

Keamanan & pelaporan

Kami menuliskan apa yang benar-benar berlaku — bukan daftar janji. Angka dan pengaturan di halaman ini dibaca langsung dari server Trainers.id saat Anda membukanya, dan kami juga menyebutkan hal yang belum kami miliki.

7
pengaman berjalan
0
yang belum ada
1/1
akun ber-hash bcrypt
30 hari
masa berlaku sesi

Ingin bukti cepat? Jalankan curl -I https://trainers.140.245.97.207.nip.io/ — header keamanan di bawah akan muncul di respons pertama.

Yang sudah berjalan hari ini

Setiap kartu menyebutkan dari mana faktanya dibaca, supaya Anda bisa memeriksanya sendiri.

Kata sandi akun

Berjalan

1 dari 1 akun tersimpan sebagai hash bcrypt (prefix $2b$10$, 60 karakter). Kata sandi asli tidak pernah disimpan.

Tabel users di basis data trainersid, dibaca saat halaman ini dibuka.

Cookie sesi

Berjalan

Nama cookie tw_session, bersifat httpOnly (tidak bisa dibaca JavaScript), SameSite=Lax, dan hanya dikirim lewat HTTPS saat aplikasi berjalan di mode produksi. Masa berlaku 30 hari, lalu sesi berakhir sendiri.

lib/auth.ts (signSession) + set cookie di app/api/auth/login/route.ts.

Header keamanan setiap respons

Berjalan

Content-Security-Policy (default-src 'self'), X-Content-Type-Options: nosniff, X-Frame-Options: DENY, Referrer-Policy: strict-origin-when-cross-origin, dan Permissions-Policy yang mematikan kamera, mikrofon, serta lokasi.

next.config.ts → headers(). Bisa Anda lihat sendiri lewat `curl -I` ke alamat situs.

Transportasi data

Berjalan

Situs dilayani lewat HTTPS, dan Content-Security-Policy memuat upgrade-insecure-requests sehingga permintaan http:// otomatis dinaikkan ke https://.

next.config.ts (CSP) + konfigurasi proxy HTTPS di server.

Unggahan foto mentor

Berjalan

Maksimal 2 MB per berkas, hanya format JPG, PNG, WEBP, GIF. Nama berkas dibuat ulang di server (slug + waktu + acak), dan berkas disimpan di direktori data/uploads/avatars yang berada di luar public/. Saat ini ada 1 berkas foto tersimpan.

app/api/mentor/avatar/route.ts + isi direktori data/uploads/avatars.

Halaman pribadi terkunci

Berjalan

Tidak ada data orang lain yang bisa dibuka tanpa masuk. 7 rute pribadi (dashboard dan halaman sesi) membalas 307 ke halaman masuk bila cookie sesi tidak ada, dan API yang butuh akun membalas 401.

Diukur ulang setiap siklus QA oleh scripts/e2e-keamanan.ts.

Kueri basis data

Berjalan

Semua kueri memakai prepared statement (mysql2 execute) dengan parameter terpisah, dan wildcard pada pencarian di-escape — jadi kata kunci yang Anda ketik tidak pernah dirangkai menjadi perintah SQL.

lib/db.ts (query) + helper escapeLike di lib/queries.ts.

Ada 7 rute pribadi yang kami uji ulang tiap siklus QA: /dashboard, /dashboard/mentor, /dashboard/admin, /dashboard/pesan, /dashboard/akun, /dashboard/notifikasi, /sesi/1. Semuanya harus mengalihkan pengunjung tanpa sesi ke halaman masuk.

Yang belum kami miliki

Kami tidak mau Anda mengira proteksinya lebih lengkap daripada kenyataannya.

Belum ada

Belum ada pembatasan percobaan masuk (rate limit)

Kami belum memasang penghitung percobaan login. Mitigasi yang sudah berjalan: kata sandi minimal 8 karakter dan disimpan sebagai hash bcrypt, sehingga percobaan menebak tetap mahal. Kalau Anda butuh proteksi tambahan untuk akun tim, gunakan kata sandi panjang yang unik.

Belum ada

Belum ada verifikasi email saat mendaftar

Pendaftaran saat ini tidak mengirim tautan verifikasi email, karena pengiriman email (SMTP) belum dikonfigurasi di server ini. Status komponennya bisa Anda lihat apa adanya di halaman Status layanan.

Belum ada

Belum ada autentikasi dua faktor (2FA)

Kami belum menyediakan kode sekali pakai atau aplikasi autentikator. Sebagai gantinya, pakai kata sandi unik yang panjang dan jangan bagikan akses email Anda.

Menjaga keamanan akun & sesi Anda

Lima hal yang paling berpengaruh, semuanya bisa Anda lakukan sendiri.

Kata sandi yang kuat

Satu akun kuat dimulai dari satu kata sandi yang tidak dipakai di tempat lain.

  1. Pakai minimal 12 karakter, atau gabungkan 4 kata acak menjadi frasa sandi yang mudah Anda ingat.
  2. Jangan pakai ulang kata sandi yang sama dengan email, media sosial, atau layanan lain.
  3. Simpan di pengelola kata sandi supaya Anda tidak perlu menghafal semuanya.
  4. Ganti kata sandi dari Pengaturan akun — Anda perlu memasukkan kata sandi saat ini untuk mengonfirmasi.

Menjaga sesi & perangkat

Sesi Anda berlaku 30 hari, jadi rawat seperti kunci rumah.

  1. Selalu tekan Keluar setelah memakai komputer bersama atau perangkat pinjaman.
  2. Jangan meneruskan tautan undangan sesi atau tautan ruang pertemuan kepada orang lain.
  3. Ingat bahwa cookie sesi bersifat httpOnly: skrip di halaman tidak bisa membacanya, tetapi orang yang memakai perangkat Anda bisa.
  4. Kalau merasa ada yang mengakses akun Anda, ganti kata sandi dari Pengaturan akun.

Mengenali halaman masuk yang asli

Cara paling cepat menghindari pencurian akun: periksa alamatnya.

  1. Halaman masuk resmi hanya satu: /login, dan selalu berada di domain Trainers.id.
  2. Kami tidak pernah meminta kata sandi lewat email, pesan di dashboard, atau aplikasi perpesanan.
  3. Periksa ikon gembok di peramban sebelum mengetik kata sandi.
  4. Kalau sebuah tautan mengarah ke alamat lain lalu meminta kata sandi Trainers.id, jangan isi — laporkan ke kami.

Aman saat sesi 1:1

Sesi mentoring itu percakapan, bukan wawancara kerja resmi. Anda yang mengatur batasnya.

  1. Gunakan fitur pesan di dashboard sampai Anda merasa nyaman; tidak wajib berbagi nomor pribadi.
  2. Anda tidak pernah wajib menyalakan kamera atau mikrofon — izin kamera, mikrofon, dan lokasi dimatikan di tingkat kebijakan situs.
  3. Jangan kirim dokumen sensitif (KTP, data keuangan, kontrak berahasia) ke siapa pun di platform ini.
  4. Kalau pembicaraan terasa tidak pantas atau menekan, hentikan sesi dan laporkan.

Data & akun Anda

Anda bisa melihat, mengubah, dan menghapus data Anda sendiri.

  1. Yang disimpan: nama, email, kata sandi (hash), jawaban kuis, riwayat pemesanan, dan pesan dengan mentor.
  2. Perbarui profil kapan saja dari Pengaturan akun; perubahan langsung berlaku di profil publik.
  3. Hapus akun dari Pengaturan akun — konfirmasi dua langkah, ketik HAPUS, lalu masukkan kata sandi Anda.
  4. Butuh penghapusan lewat tim kami? Kirim permintaan dari halaman Kontak memakai email terdaftar.

Kalau ada yang mengaku dari Trainers.id

Lima tanda berikut hampir selalu berarti upaya penipuan.

Meminta pembayaran apa pun

Mentoring di Trainers.id gratis. Tidak ada biaya pendaftaran, biaya verifikasi, atau biaya "kursi" untuk sesi 1:1.

Meminta kode OTP, kata sandi, atau data kartu

Tidak ada anggota tim kami yang membutuhkan hal itu. Kode OTP hanya untuk Anda, jangan diteruskan ke siapa pun.

Menjanjikan pekerjaan dengan jaminan biaya

Mentor berbagi pengalaman dan masukan, bukan menjual lowongan kerja. Tawaran "dijamin diterima asal bayar" selalu penipuan.

Memindahkan percakapan lalu meminta transfer

Kalau lawan bicara buru-buru pindah ke kanal lain dan menagih transfer pribadi, hentikan percakapan.

Meminta Anda memasang aplikasi atau mengisi formulir mencurigakan

Kami tidak pernah meminta pemasangan aplikasi pihak ketiga maupun pengisian formulir di luar domain Trainers.id.

Cara melaporkan penyalahgunaan

Semua laporan masuk ke tim yang sama dan dibalas lewat email yang Anda cantumkan. Tidak ada jalur khusus yang perlu Anda tebak.

Penyalahgunaan oleh pengguna lain

Perilaku tidak pantas, tekanan untuk membayar, spam, atau permintaan data pribadi.

Kirim lewat halaman Kontak dengan subjek "Laporan penyalahgunaan". Sertakan nama atau tautan profil, waktu kejadian, dan tangkapan layar bila ada.

Kirim laporan

Masalah teknis atau dugaan celah keamanan

Halaman menampilkan data yang bukan milik Anda, atau Anda menemukan perilaku tak terduga.

Laporkan lewat halaman Kontak dengan langkah yang bisa kami ulangi. Mohon jangan menguji dengan cara yang merugikan pengguna lain atau membuka data orang lain.

Laporkan masalah teknis

Kendala akun: tidak bisa masuk, lupa kata sandi

Anda terkunci dari akun sendiri atau menduga akun dipakai orang lain.

Baca panduan akun di Pusat Bantuan; kalau masih gagal, hubungi kami memakai email yang terdaftar di akun tersebut.

Panduan akun & privasi

Sementara pengiriman email belum aktif, laporan tetap tercatat di basis data kami dan bisa dibaca tim — status komponen email ditampilkan apa adanya di halaman Status layanan. Untuk hal mendesak, kirim ke halo@trainers.id lewat email Anda sendiri.

Batas halaman ini

  • Halaman ini menjelaskan pengaman yang ada di aplikasi Trainers.id. Ia bukan audit keamanan independen dan bukan sertifikasi apa pun.
  • Angka akun, berkas foto, dan masa berlaku sesi dibaca saat halaman dibuka — bukan angka contoh. Kalau basis data sedang mati, angkanya tampil 0 dan itu memang berarti datanya tidak terbaca.
  • Kami tidak memakai layanan pemantauan uptime pihak ketiga; kalau situs tidak bisa dibuka, itu gangguan yang belum tercatat otomatis.

Detail teknis lain: batas unggah foto 2 MB (JPG, PNG, WEBP, GIF), Kebijakan privasi, Syarat & ketentuan, dan Pusat Bantuan — Akun & privasi.