Dokumen ini menjelaskan kebijakan keamanan, fitur pengamanan yang diimplementasikan pada MikhPay v1.1, serta rekomendasi konfigurasi untuk menjaga keamanan sistem Anda.
Jika Anda menemukan celah keamanan (vulnerability) pada aplikasi ini, mohon jangan melaporkannya secara publik melalui GitHub Issue. Silakan hubungi tim pengelola repositori secara privat untuk mencegah eksploitasi oleh pihak yang tidak bertanggung jawab.
Aplikasi ini telah melalui proses security hardening untuk memitigasi celah keamanan yang umum terjadi pada aplikasi web:
- Sistem
.env: Semua kunci API sensitif (sepertiQRIS_SECRET_TOKEN,MIKHMON_API_KEY, dll.) disimpan di berkas.envyang berada di luar jangkauan parser publik. - Git Protection: Berkas
.envsecara otomatis diabaikan oleh Git melalui.gitignoreuntuk mencegah kebocoran kredensial ke repositori publik (GitHub).
.htaccessFolder Lock: Direktori/logsdan/voucher(tempat menyimpan berkas JSON transaksi pending) diproteksi menggunakan berkas.htaccessdengan aturanDeny from all. Hal ini mencegah pihak luar mengunduh file log atau data transaksi melalui HTTP request langsung.- Auto Garbage Collector: Sistem secara acak menghapus berkas JSON transaksi yang berumur lebih dari 2 hari dengan probabilitas 5% saat halaman dimuat untuk meminimalkan penumpukan data.
- Token Verification: Setiap notifikasi webhook/automasi MacroDroid yang masuk divalidasi keasliannya menggunakan verifikasi
QRIS_SECRET_TOKEN. Notifikasi palsu yang dikirim oleh penyerang akan otomatis ditolak (HTTP 401 Unauthorized).
- Checkout Rate Limiting: Penambahan batasan jeda klik checkout (cooldown selama 10 detik) berbasis session PHP untuk mencegah spam pembuatan pesanan QRIS.
- Parameter Whitelisting: Parameter query
?session=divalidasi secara ketat. Sistem hanya akan memproses nama sesi router MikroTik yang terdaftar di berkasinclude/config.phpuntuk mencegah serangan Local File Inclusion (LFI) atau manipulasi parameter. - HTTP Security Headers: Halaman depan dilengkapi dengan header keamanan standar industri untuk mencegah serangan XSS, Clickjacking, dan MIME sniffing:
header("X-Frame-Options: SAMEORIGIN"); header("X-Content-Type-Options: nosniff"); header("X-XSS-Protection: 1; mode=block");
Untuk memastikan sistem Anda benar-benar aman saat digunakan oleh publik, terapkan langkah-langkah berikut:
Selalu gunakan sertifikat SSL/TLS pada server hosting Anda. HTTPS memastikan data sensitif seperti kode voucher dan data pelanggan tidak dapat disadap di jaringan (Man-in-the-Middle attack).
- Jangan membuka port API MikroTik (
8728atau8729untuk SSL) secara bebas ke seluruh internet. - Pada pengaturan router MikroTik Anda (
IP -> Services), batasi opsi Available From pada port API hanya untuk alamat IP publik milik Web Server hosting MikhPay Anda.
Ganti username default mikhmon dan password default 1234 di menu Admin Settings MikhPay dengan kombinasi karakter yang rumit (panjang minimal 12 karakter, terdiri dari huruf besar, huruf kecil, angka, dan simbol).