Kata sandi akun
Berjalan1 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.
Beranda Keamanan
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.
Ingin bukti cepat? Jalankan curl -I https://trainers.140.245.97.207.nip.io/ — header keamanan di bawah akan muncul di respons pertama.
Setiap kartu menyebutkan dari mana faktanya dibaca, supaya Anda bisa memeriksanya sendiri.
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.
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.
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.
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.
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.
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.
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.
Kami tidak mau Anda mengira proteksinya lebih lengkap daripada kenyataannya.
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.
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.
Kami belum menyediakan kode sekali pakai atau aplikasi autentikator. Sebagai gantinya, pakai kata sandi unik yang panjang dan jangan bagikan akses email Anda.
Lima hal yang paling berpengaruh, semuanya bisa Anda lakukan sendiri.
Satu akun kuat dimulai dari satu kata sandi yang tidak dipakai di tempat lain.
Sesi Anda berlaku 30 hari, jadi rawat seperti kunci rumah.
Cara paling cepat menghindari pencurian akun: periksa alamatnya.
Sesi mentoring itu percakapan, bukan wawancara kerja resmi. Anda yang mengatur batasnya.
Anda bisa melihat, mengubah, dan menghapus data Anda sendiri.
Lima tanda berikut hampir selalu berarti upaya penipuan.
Mentoring di Trainers.id gratis. Tidak ada biaya pendaftaran, biaya verifikasi, atau biaya "kursi" untuk sesi 1:1.
Tidak ada anggota tim kami yang membutuhkan hal itu. Kode OTP hanya untuk Anda, jangan diteruskan ke siapa pun.
Mentor berbagi pengalaman dan masukan, bukan menjual lowongan kerja. Tawaran "dijamin diterima asal bayar" selalu penipuan.
Kalau lawan bicara buru-buru pindah ke kanal lain dan menagih transfer pribadi, hentikan percakapan.
Kami tidak pernah meminta pemasangan aplikasi pihak ketiga maupun pengisian formulir di luar domain Trainers.id.
Semua laporan masuk ke tim yang sama dan dibalas lewat email yang Anda cantumkan. Tidak ada jalur khusus yang perlu Anda tebak.
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 laporanHalaman 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 teknisAnda 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 & privasiSementara 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.
Detail teknis lain: batas unggah foto 2 MB (JPG, PNG, WEBP, GIF), Kebijakan privasi, Syarat & ketentuan, dan Pusat Bantuan — Akun & privasi.