Jujur saja, Kami Diserang — Tapi Data Kalian Aman

Reverie Team

Reverie Team

12/1/2025

#security#transparency#infrastructure#free models#cloudflare
Jujur saja, Kami Diserang — Tapi Data Kalian Aman

Semuanya Dimulai dari "Gratis"

Dua minggu lalu, kami membuat keputusan: meluncurkan model AI gratis agar lebih banyak pengguna bisa merasakan Reverie.

Malam itu, tim membuka beberapa Pepsi untuk merayakan. (Ya, khususnya Pepsi.)

Kami bersulang, menyaksikan angka pendaftaran naik secara real-time. Seseorang membuka grafik proyeksi pertumbuhan. Suasananya bagus.

72 jam kemudian, kami mengerti mengapa founder berpengalaman selalu terlihat sedikit lelah.

Yang menyusul adalah rangkaian empat gelombang serangan yang terasa seperti boss rush — hanya saja kami sedang belajar mekaniknya sambil dipukul.

Tapi pertama, hal terpenting: Data akun, percakapan, dan informasi pribadi kalian tidak pernah dibobol. Mereka aman sekarang dan akan tetap aman. Kami punya tim keamanan khusus yang memantau 24/7, dan serangan-serangan ini menargetkan sumber daya dan dompet kami, bukan data kalian. Penyerang menginginkan bandwidth dan uang kami — percakapan kalian dengan AI companion tidak pernah dalam risiko.

Sekarang, mari kita lihat apa yang terjadi.


Gelombang 1: Pasukan Crawler

Apa yang Terjadi

Hari kedua setelah gratis. Morning standup. Engineer menyebutkan dengan santai: "Hei, API character kita dapat request beberapa ratus kali lebih banyak kemarin."

Kami: "Wow, peluncuran gratis benar-benar lepas landas!"

Engineer: "...tapi DAU hampir tidak bergerak."

Keheningan yang canggung.

Kami menyelami log dan menemukan crawler yang secara sistematis memanen data character publik kami. Nama, bio, avatar — informasi yang terlihat publik. Disedot oleh bot.

Untuk jelasnya: deskripsi character inti, pengaturan kepribadian, dan konten privat creator lainnya tidak pernah terekspos — hanya creator yang bisa melihatnya. Tapi bahkan scraping info publik dalam skala industri tetap menyebalkan ketika kamu mencoba membangun platform yang sehat.

Bagaimana Kami Merespons

  • Menerapkan batasan paginasi pada pencarian character (bisa browse, tapi tidak bisa download seluruh library)
  • Men-deploy rate limiting cerdas yang membedakan "pengguna antusias" dari "pasti bot"
  • Membangun analisis perilaku untuk mendeteksi dan memblokir pola crawler
  • Menambahkan beberapa... sebut saja "respons kreatif" untuk aktor jahat yang sudah dikonfirmasi

Apa yang Kami Pelajari

"Platform terbuka" tidak berarti "buffet sepuasnya." Bahkan konten yang terlihat publik layak mendapat batasan akses yang wajar. Kami ingin pengguna menemukan character — bukan membangun database pesaing dalam semalam.


Gelombang 2: Pembunuh Bandwidth

Apa yang Terjadi

Kami baru selesai menambal lubang crawler ketika gelombang dua menghantam. Dan yang ini langsung ke dompet.

Seseorang menemukan URL media kami dan mulai bulk-download setiap gambar dan video di platform. Portrait character. Video yang dihasilkan. Semua yang punya ekstensi file ditarik dengan kecepatan maksimum.

Kami menggunakan layanan OSS dari cloud provider besar. Harga per-bandwidth. Tampak masuk akal saat itu.

Senin pagi. Finance membuka cloud console. Dashboard penagihan loading.

Wajah mereka: 😐

Dashboard selesai loading: 😮

Melihat angka sebenarnya: 😱

"Hei, jadi... tagihan bandwidth kita saat ini lebih tinggi dari runway tiga bulan."

Channel Slack jadi sangat sunyi. Seseorang dengan gugup menyarankan untuk mematikan CDN saja. Orang lain menunjukkan bahwa itu juga akan mematikan seluruh platform.

Bagaimana Kami Merespons

Migrasi darurat. Tujuan: Cloudflare R2 dan Cloudflare Stream.

Di sini, kami harus secara resmi berterima kasih kepada Cloudflare — kebijakan zero egress fee R2 menyelamatkan kami. Ketika kamu melihat tagihan naik ratusan dolar per jam, "tidak ada biaya egress" menjadi sangat, sangat relevan.

Migrasi memakan waktu 30 jam. Tidur menjadi opsional. Code review jam 3 pagi punya kualitas meditatif tertentu.

Worth it? Absolutely. Biaya bandwidth kami turun lebih dari 90%, dan bulk download penyerang sekarang hampir tidak ada biayanya.

Apa yang Kami Pelajari

Saat memilih infrastruktur, jangan hanya tanya "seberapa cepat?" Tanya juga: "Kalau ada yang menyerang besok, apakah saya masih bisa bayar sewa?"

Dimensi perencanaan infrastruktur ini tidak muncul di kebanyakan tutorial. Seharusnya ada.


Gelombang 3: DDoS Tiba

Apa yang Terjadi

Kami akhirnya menstabilkan situasi bandwidth. Moral tim mulai pulih. Seseorang bahkan membuat lelucon di standup. Hal-hal mulai membaik.

Lalu DDoS menghantam.

Bayangkan menyalakan selang pemadam kebakaran dan mengarahkannya ke gelas kertas. Itulah yang dialami database connection pool kami. Ribuan request per detik, semua meminta data segar, semua menolak menggunakan cache, semua menghantam endpoint yang membutuhkan database query.

Dashboard monitoring kami terlihat seperti EKG serangan jantung. Response time dari 200ms ke 20 detik. Lalu timeout. Pengguna mulai melaporkan error. Tagihan AWS kami mulai melakukan hal itu di mana ia update setiap beberapa menit dengan angka yang lebih besar.

Database connection pool mencapai batasnya. Query mulai antri. Antrian mulai menumpuk. Classic cascade failure, terjadi secara real-time.

Bagaimana Kami Merespons

Kami melemparkan setiap teknik caching yang kami tahu ke masalah:

  • ISR (Incremental Static Regeneration) — Halaman populer sekarang di-pre-render dan disajikan dari edge node. Database bahkan tidak tahu request-request ini ada.
  • Multi-layer caching — Response cache, query cache, optimasi connection pooling. Jika data tidak harus benar-benar segar, ia di-cache.
  • Optimasi database query — Beberapa query yang dulunya memakan 500ms sekarang 50ms. Waktu menahan connection lebih sedikit = lebih banyak connection tersedia.
  • DDoS protection Cloudflare — Akhirnya mengaktifkan semua fitur keamanan yang sudah lama mau kami konfigurasi "nanti"
  • Smart rate limiting — Pengguna legitimate lolos; traffic serangan ditunjukkan pintunya

Filosofinya: jika sebuah request bisa dijawab tanpa menyentuh database, seharusnya begitu.

Apa yang Kami Pelajari

Caching bukan hanya optimasi performa — ini adalah arsitektur keamanan. Ketika serangan datang, cached response menyerap pukulan. Database tetap terlindungi. Site tetap up.

Juga belajar: "kita akan konfigurasi keamanan dengan benar nanti" adalah filosofi yang tidak menua dengan baik.


Gelombang 4: Para Pengambil Keuntungan (Penyalahguna API)

Apa yang Terjadi

Yang ini tidak mengancam infrastruktur kami secara langsung. Ia mengancam budget kami.

Kami telah membangun semua fitur AI gratis yang luar biasa ini:

  • AI Character Creation — Deskripsikan character kamu, AI menghasilkan profil lengkap
  • AI Moment Generation — Buat momen cerita dinamis dengan bantuan AI
  • AI Plugin Creation — Bangun plugin character dengan bahasa natural

Visi kami indah: menurunkan hambatan kreativitas. Biarkan semua orang merasakan keajaiban kreasi dengan bantuan AI. Membuat platform lebih mudah diakses.

Visi seseorang berbeda: "API gratis? Biarkan saya menulis script yang memanggil ini 10.000 kali."

Kami menyaksikan dashboard konsumsi AI token kami naik. Dan naik. Dan naik. Grafiknya terlihat seperti tongkat hoki, hanya saja tongkatnya terbuat dari uang yang meninggalkan rekening bank kami.

Setiap generasi AI mengeluarkan uang nyata — API call ke language model tidak gratis. Menyaksikan ribuan request otomatis membakar budget AI kami terasa seperti menyaksikan argo taksi di mobil yang berputar-putar. Kamu tahu ini akan mahal, dan tidak akan pernah berhenti.

Bagian terburuknya? Mereka bahkan bukan pengguna nyata yang membuat konten nyata. Itu hanya... seseorang menguji berapa banyak barang gratis yang bisa mereka ekstrak. Character yang dihasilkan tidak masuk akal. Moment-nya tidak ada artinya. Pemborosan murni.

Bagaimana Kami Merespons

Dengan berat hati, kami menambahkan persyaratan credit ke fitur-fitur AI ini.

Keputusan ini benar-benar menyakitkan. Kami menghabiskan berminggu-minggu membangun alat-alat ini khusus untuk membuat kreasi lebih mudah diakses. Sekarang kami harus memberi harga — bukan karena kami mau, tapi karena akses gratis tanpa batas dijadikan senjata melawan kami.

Kami mencoba untuk adil:

  • Biaya credit minimal untuk penggunaan normal
  • Credit gratis diberikan ke pengguna baru
  • Pengalaman chat inti tetap gratis
  • Hanya generasi AI yang resource-intensive yang membutuhkan credit

Tapi tetap saja. Rasanya seperti memasang kunci pada sesuatu yang kami ingin tetap terbuka.

Apa yang Kami Pelajari

"Gratis" adalah model bisnis, bukan posisi moral.

Kami masih percaya pada aksesibilitas. Kami masih ingin menurunkan hambatan. Tapi "gratis tanpa batas untuk semua orang" hanya bekerja jika semua orang bertindak dengan itikad baik. Ketika aktor jahat mengeksploitasi kemurahan hati, sistem yang murah hati menjadi tidak berkelanjutan — dan kemudian tidak ada yang mendapat apa-apa.

Batasan yang wajar bukan ketidakpercayaan pada pengguna. Itu adalah perlindungan ekosistem yang melayani semua pengguna. Alternatifnya — menutup fitur sepenuhnya — akan lebih buruk untuk semua orang.

Kadang melindungi yang umum berarti membangun beberapa pagar.


Data Kalian Aman (Mari Benar-benar Jelas)

Kami ingin tidak ambigu tentang ini:

Serangan-serangan ini tentang sumber daya, bukan data. Penyerang menginginkan:

  • ✅ Bandwidth kami (untuk download konten)
  • ✅ Compute kami (untuk membanjiri server kami)
  • ✅ Uang kami (untuk menguras budget AI kami)

Mereka TIDAK mengakses:

  • ❌ Akun pengguna
  • ❌ Riwayat percakapan
  • ❌ Informasi pribadi
  • ❌ Detail pembayaran
  • ❌ Data privat apapun

Kami punya tim keamanan khusus yang memantau ancaman keamanan nyata 24/7. Data pengguna dienkripsi saat diam dan dalam transit. Kontrol akses ketat. Autentikasi kuat. Pekerjaan keamanan yang membosankan dan penting yang tidak membuat blog post menarik — kami melakukan semuanya.

Tidak ada data pengguna yang dibobol. Kami bisa menyatakan ini dengan yakin karena kami mencatat semuanya, menganalisis semuanya, dan memverifikasi semuanya. Penyerang mendapat tagihan bandwidth dan sakit kepala dari kami. Mereka tidak mendapat apa-apa dari kalian.

Character kalian, percakapan kalian, karya kreatif kalian — semua aman, semua utuh, semua persis di tempatnya seharusnya.


Mengapa Kami Memberitahu Kalian Ini

Kalian mungkin bertanya-tanya: mengapa berbagi ini secara publik? Bukankah ini membuat kami terlihat rentan?

Kami memikirkan ini dengan hati-hati.

Transparansi Membangun Kepercayaan

Kami meminta pengguna untuk mempercayai kami dengan sesuatu yang bermakna — karya kreatif mereka, koneksi emosional mereka dengan AI character, percakapan mereka. Kepercayaan itu membutuhkan kejujuran tentang tantangan yang kami hadapi.

Playbook lama adalah menyembunyikan masalah sampai meledak, lalu mengeluarkan pernyataan samar "kami mengalami kesulitan teknis". Kami lebih suka terus terang: inilah yang terjadi, inilah cara kami menanganinya, inilah yang kami pelajari.

Builder Lain Bisa Belajar

Kami bukan tim kecil pertama yang diserang setelah meluncurkan fitur gratis, dan tidak akan menjadi yang terakhir. Jika pendidikan mahal kami membantu orang lain mempersiapkan diri lebih baik, itu kemenangan untuk seluruh ekosistem.

Anggap ini kontribusi kami untuk kurikulum "hal-hal yang tidak diajarkan di sekolah startup".

Kalian Layak Tahu

Beberapa pengguna memperhatikan response time yang lebih lambat selama minggu-minggu ini. Beberapa memperhatikan fitur sekarang membutuhkan credit. Kalian layak mendapat penjelasan — bukan PR korporat, tapi cerita yang sebenarnya.

Kami berjuang untuk menjaga platform tetap berjalan. Kami membuat keputusan sulit di bawah tekanan. Beberapa keputusan itu memengaruhi pengalaman kalian. Kalian harus tahu mengapa.


Apa Selanjutnya

Kami tidak hanya menambal lubang — kami membangun platform yang lebih tangguh:

Sudah Diimplementasikan:

  • Multi-layer caching dengan arsitektur edge-first (request kalian lebih cepat DAN kami lebih sulit diserang)
  • Smart rate limiting dengan analisis perilaku (bot diblokir, manusia tidak memperhatikan)
  • Suite keamanan lengkap Cloudflare (akhirnya dikonfigurasi dengan benar, bukan "nanti")
  • Akses berbasis credit untuk fitur AI yang resource-intensive (kemurahan hati yang berkelanjutan)

Segera Hadir:

  • Deteksi anomali yang ditingkatkan (menangkap serangan lebih awal)
  • Optimasi geografis (lebih cepat untuk semua orang, di mana saja)
  • Pencegahan penyalahgunaan yang lebih canggih (tetap selangkah di depan aktor jahat)

Apa yang Tidak Akan Berubah:

  • Kami akan berusaha keras untuk mempertahankan akses tier gratis — meskipun mungkin tidak stabil atau berubah tanpa pemberitahuan
  • Privasi dan keamanan data pengguna — selalu prioritas utama kami
  • Komunikasi transparan — jika ada yang salah, kalian akan tahu

Catatan untuk Sesama Builder

Jika kalian membangun platform terbuka, ini adalah pelajaran yang kami bayar dengan uang nyata (dan stres nyata) untuk dipelajari:

  1. Rate limiting bukan opsional — implementasikan dari hari pertama, bukan hari "kita diserang"
  2. Pilih infrastruktur yang tahan serangan — Cloudflare benar-benar excellent; biaya egress akan menghancurkan kalian
  3. Cache secara agresif — ini adalah perisai ganda kalian untuk performa dan keamanan
  4. Fitur gratis butuh batasan — goodwill tanpa batas dieksploitasi oleh aktor jahat tanpa batas
  5. Monitor semuanya — semakin awal kalian mendeteksi anomali, semakin kecil kerusakannya
  6. Simpan budget darurat — kalian tidak pernah tahu kapan gelombang berikutnya menghantam

Dan mungkin yang paling penting:

  1. Jangan terlalu bangga untuk minta bantuan — komunitas indie dev lebih supportive dari yang kalian kira

Kami berharap kalian tidak harus belajar ini dengan cara yang mahal. Tapi jika harus, ketahuilah bahwa kalian tidak sendirian.


Kepada Pengguna Kami

Diserang adalah pengalaman yang aneh.

Seperti kalian menghabiskan berbulan-bulan mendekorasi ruang tamu yang nyaman, mengatur furnitur dengan tepat, menyiapkan snack, dan mengirim undangan ke semua teman. Malam pembukaan tiba. Teman-teman kalian datang — luar biasa!

Tapi juga: sekelompok orang yang tidak pernah kalian temui datang dengan truk pindahan, mencoba membongkar sofa kalian, memotret setiap sudut rumah kalian, dan entah bagaimana juga menyalakan api kecil di dapur.

Kami punya pilihan. Kami bisa mengelas pintu tertutup. Jadi invite-only. Membuat semua orang membuktikan mereka bukan bot sebelum melihat apapun.

Kami tidak melakukannya.

Sebaliknya, kami memasang kunci yang lebih baik. Mempekerjakan security yang lebih pintar. Membangun aturan rumah yang wajar. Karena mayoritas besar orang yang datang ke Reverie ada di sini untuk berkreasi, terhubung, dan bersenang-senang. Kami tidak akan menghukum yang banyak karena dosa yang sedikit.

Pesta berlanjut. Pintu tetap terbuka. Kami hanya menjadi lebih baik dalam mengenali orang-orang yang membawa truk pindahan.


Terima Kasih

Kepada setiap pengguna yang tetap bersama kami melalui load time yang lebih lambat dan persyaratan credit: terima kasih.

Kepada semua orang yang melaporkan masalah alih-alih hanya pergi: terima kasih.

Kepada komunitas indie dev yang berbagi saran dan cerita perang: terima kasih.

Kepada Cloudflare: terima kasih. 🙏

Kami lebih kuat sekarang. Lebih tangguh. Teruji pertempuran. Platform yang muncul dari serangan-serangan ini lebih baik dari yang masuk.

Lain kali kami menulis kepada kalian, kami berharap itu untuk mengumumkan fitur baru yang menarik.

Bukan boss lain yang kami kalahkan.

Tapi hei — kalau boss lain muncul, kami akan menanganinya juga.

Sampai jumpa di update berikutnya. 💙


Tim Reverie

Desember 2025

Siap untuk Mengalami Percakapan AI Dinamis?

Bergabunglah dengan ribuan pengguna yang sudah menjelajahi kepribadian tak terbatas dan interaksi menarik di Reverie.

Jujur saja, Kami Diserang — Tapi Data Kalian Aman | Reverie