SaaS Anda Sedang Membuang-buang Uang

Kebanyakan pengembang merilis SaaS mereka lalu beralih ke hal lain. Mereka menganggap keamanan sebagai tugas yang bisa dikerjakan nanti. Mereka menunggu pengguna asli atau uang sungguhan datang.

Kerugian finansial yang nyata sering kali berasal dari kesalahan sederhana. Ini bukan peretasan yang kompleks. Ini adalah kesalahan logika dalam kode Anda.

Berikut adalah empat cara umum Anda kehilangan uang:

  1. Race Condition pada Sistem Kredit Anda membaca saldo pengguna, memeriksanya, lalu menulis saldo baru. Jika seorang pengguna mengirim dua permintaan secara bersamaan, kedua permintaan tersebut mungkin lolos pemeriksaan sebelum permintaan pertama memperbarui database. Anda memberikan dua layanan dengan harga satu.

Solusinya: Gunakan operasi database atomik. Alih-alih membaca lalu menulis, gunakan satu perintah tunggal untuk memperbarui saldo hanya jika pengguna memiliki kredit yang cukup.

  1. Memercayai Input Klien untuk Identitas Anda mengambil alamat email dari request body saat checkout. Pengguna yang terautentikasi dapat mengubah email tersebut menjadi alamat orang lain. Hal ini memungkinkan mereka untuk membuat sesi penagihan untuk akun yang salah atau menyelidiki sistem Anda.

Solusinya: Jangan pernah memercayai identitas dari request body. Ekstrak email dari token sesi yang terverifikasi di server Anda.

  1. Logika Penagihan Tahunan yang Rusak Banyak pengembang menyetel ulang (reset) kredit pengguna dengan mendengarkan event pembayaran Stripe. Ini berhasil untuk paket bulanan, tetapi gagal untuk paket tahunan. Stripe mengirimkan satu event per tahun. Pengguna Anda mendapatkan kredit pada hari pertama dan tidak mendapatkan apa-apa selama sebelas bulan berikutnya.

Solusinya: Pisahkan reset kredit dari event penagihan. Gunakan cron job harian untuk memeriksa pengguna mana yang perlu di-reset berdasarkan tanggal reset.

  1. Penyimpanan Token yang Tidak Aman Anda menyimpan token reset kata sandi di localStorage. Skrip apa pun di halaman Anda dapat mengakses localStorage. Ini termasuk ekstensi browser dan analitik pihak ketiga.

Solusinya: Gunakan SDK autentikasi Anda untuk menangani token pemulihan. Biarkan library memproses token secara otomatis tanpa menyimpannya di local storage.

Masalahnya selalu sama: Anda memercayai klien. Anda percaya bahwa permintaan datang satu per satu. Anda percaya bahwa event penagihan mencakup setiap kasus.

Memperbaiki masalah ini membutuhkan waktu kurang dari sehari. Audit kode Anda sebelum Anda kehilangan uang.

Sumber: https://dev.to/manolito99/your-saas-is-probably-leaking-money-right-now-and-you-dont-know-it-1g38