Fitur-fitur pada Aplikasi pada kali ini :
- Management Barang
- Penambahan dan manipulasi kategori dan barang
- Transaksi Penjualan
- Laporan Transaksi Penjualan
- Melihat stok barang dan restok barang
- Peringatan untuk barang habis
Status Proyek
Pengembangan aktif aplikasi ini telah dihentikan. Namun, repositori tetap dibuka untuk kontribusi komunitas. Silakan ajukan pull request apabila ingin menambahkan fitur baru, melakukan pemeliharaan, atau memperbaiki permasalahan lainnya.
Dibutuhkan PHP 8.2 ke atas beserta ekstensi pdo_mysql dan fileinfo. Kode telah ditinjau dan diuji jalan pada PHP 8.2.
Butuh Versi yang Lebih Lengkap?
Repositori ini adalah edisi belajar/opensource dan tidak lagi dikembangkan aktif. Jika butuh aplikasi POS yang terus diperbarui, lengkap dengan dukungan teknis, silakan lihat produk resmi dari Codekop:
- POS Kasir PHP & MySQL (Full Version) – https://www.codekop.com/products/source-code-aplikasi-pos-penjualan-barang-kasir-dengan-php-mysql-3.html
- Varian POS Kasir lainnya – https://www.codekop.com/products/pos-kasir.html
Klarifikasi Keamanan CVE Fixed
Sebagai tindak lanjut atas laporan kerentanan yang telah dipublikasikan, versi terbaru repositori ini telah mendapatkan perbaikan keamanan dari tim Codex dengan cakupan berikut:
- CVE-2023-36345 – Penambahan perlindungan CSRF pada seluruh alur perubahan data penting.
- CVE-2023-36346 – Sanitasi dan escaping parameter untuk mencegah serangan XSS.
- CVE-2023-36347 – Pembatasan akses terhadap berkas ekspor agar hanya dapat diunduh oleh pengguna yang sah.
- CVE-2023-36348 – Validasi berlapis pada unggahan berkas untuk mencegah eksekusi kode dari file yang tidak sah.
Harap selalu memperbarui instalasi Anda dengan perubahan terbaru dan meninjau ulang konfigurasi server sebelum digunakan di lingkungan produksi.
Daftar Temuan Keamanan
| Kode Bug | Deskripsi | Temuan / Dampak | Rekomendasi | Status |
|---|---|---|---|---|
| BUGSEC-01 | CSRF (Cross-Site Request Forgery) | Penyerang bisa mengubah data (hapus barang/user) tanpa izin pemilik akun. | Implementasikan CSRF Token pada setiap form POST. | ✅ Sudah diperbaiki — token CSRF (fungsi/csrf.php) diverifikasi dengan hash_equals() pada seluruh alur tambah/ubah/hapus data. |
| BUGSEC-02 | XSS (Cross-Site Scripting) | Injeksi skrip berbahaya melalui input nama barang, kategori, nama toko, dsb. | Gunakan fungsi htmlspecialchars() atau sanitasi parameter. |
✅ Sudah diperbaiki — seluruh output data dinamis di-escape dengan htmlspecialchars(..., ENT_QUOTES, 'UTF-8'), termasuk celah pada admin/template/sidebar.php yang baru ditutup. |
| BUGSEC-03 | Broken Access Control | Pengguna yang tidak sah dapat mengunduh berkas laporan ekspor. | Tambahkan validasi session pada file unduhan. | ✅ Sudah diperbaiki — excel.php dan print.php memvalidasi $_SESSION['admin'] sebelum mengeluarkan konten. |
| BUGLOG-04 | Session Timeout | Sesi pengguna tidak berakhir otomatis setelah idle lama. | Atur durasi session.gc_maxlifetime di server/aplikasi. |
✅ Sudah diperbaiki — ditambahkan pengecekan idle timeout di level aplikasi (session_enforce_timeout() pada fungsi/csrf.php, dipanggil dari index.php, excel.php, print.php, dan fungsi/edit/edit.php) yang men-destroy sesi setelah 30 menit tanpa aktivitas, tidak hanya bergantung pada gc_maxlifetime server. |
| BUGVAL-05 | File Upload Vulnerability | Risiko eksekusi kode melalui unggahan file ilegal. | Batasi ekstensi file hanya untuk .jpg atau .png. |
✅ Sudah diperbaiki — validasi tipe file dilakukan berdasarkan MIME asli (finfo_file, bukan sekadar ekstensi), dibatasi maks. 4 MB, disimpan dengan nama acak, dan direktori unggahan (assets/img/user) menonaktifkan eksekusi PHP lewat .htaccess. |
Selain lima temuan di atas, perbaikan tambahan juga diterapkan: hashing kata sandi dimigrasikan dari MD5 ke password_hash()/bcrypt (dengan verifikasi mundur otomatis untuk akun lama), session_regenerate_id() dipanggil setelah login untuk mencegah session fixation, serta direktori .git dan berkas db_toko.sql diblokir dari akses HTTP langsung lewat .htaccess.
REVISI PROGRAM :
- Kasir (
admin/module/jual/index.php) dirombak jadi layout dua kolom (cari barang & keranjang) yang hidup lewat AJAX (fungsi/kasir/kasir.php) — tanpa reload halaman, kembalian dihitung langsung saat mengetik. - Setiap transaksi kini punya nomor transaksi (
no_transaksi, formatYYYYMMDD-XXX) yang menghubungkan seluruh item dalam satu nota; struk bisa dicetak ulang kapan saja lewatprint.php?notrx=.... - Laporan (
admin/module/laporan/index.php) dikelompokkan per transaksi, dengan modal Detail untuk rincian item, tombol Cetak Ulang, dan Hapus (membatalkan transaksi sekaligus mengembalikan stok barang). excel.phpmenambahkan kolom No Transaksi pada ekspor data (tetap per-item, tidak dikelompokkan).- Migrasi hashing kata sandi dari MD5 ke
password_hash()/bcrypt, dengan upgrade otomatis untuk akun lama saat login. - Penambahan
session_regenerate_id()setelah login untuk mencegah session fixation. - Penerapan idle session timeout 30 menit di seluruh endpoint admin (
index.php,excel.php,print.php,fungsi/edit/edit.php,fungsi/kasir/kasir.php). - Penutupan celah XSS pada
admin/template/sidebar.phpdenganhtmlspecialchars(). - Pemblokiran akses langsung ke
.git,.sql,.env,.log,.mdlewat.htaccess. - Kompatibilitas dan pengujian dilakukan pada PHP 8.2.
- Pembaruan dokumentasi untuk menjelaskan status pemeliharaan dan klarifikasi keamanan terkini.
- Penambahan mitigasi kerentanan CVE-2023-36345 hingga CVE-2023-36348 melalui validasi input, pembatasan akses, dan perlindungan CSRF.
- Penyeragaman tampilan cetak struk agar kompatibel dengan printer thermal serta pengetatan sanitasi data cetak.
12 Desember 2022
- Update v2.0
- Migrasi Template SB Admin 2 Bootstrap 4
31 Januari 2021
- Tambah Sortir khusus stok kurang dari >= 3
- Cari Per Tanggal Laporan
- Cari Per bulan Laporan
- Fix Perhitungan Laporan
06 Oktober 2020
- revisi session error pada hosting dengan error : Warning: session_start(): Cannot send session cookie - headers already sent by (output started at [duplicate] -> fixed
- Ganti background login, header
- Ganti Header table barang, table keranjang, table laporan
- Fix transaksi -> transaksi stok < keranjang tidak bisa diproses
- penghapusan trigger sql
- penambahan fungsi transaksi untuk pengurangan stok barang setelah transaksi bayar
23 Agustus 2020
- revisi print
- menambahkan alert telah di bayar di bagian bayar transaksi penjualan
18 Juli 2020
- fix edit kategori
- fix modal tambah barang
- rapihin form laporan
29 Agustus 2019
- laporan tampilan error -> fixed
- klik button bayar transaksi tidak masuk ke laporan -> fixed
- pencarian barang pada menu transaksi sudah otomatis dengan tambahan jquery ajax
- data laporan dapat dicari berdasarkan periode bulan dan tahun
Untuk Login :
- Username : admin
- Password : 123
* Penggunaan Login untuk Single User
Screenshot / tampilan :
Contoh Program V2
Login
Dashboard
Tabel Barang
Kategori
Keranjang / Transaksi
Laporan
Nama Toko
Atur User
Contoh Program V1
Halaman utama :
Dashboard

Tabel Kategori

Tabel Barang

Silahkan download aplikasi ditombol berikut :
* Demikian hasil revisi aplikasi penjualan barang kasir nya, jika masih ada terdapat error dan bug lainnya tulis saja di kolom komentar. Source ini free untuk di pelajari, bukan untuk di jual kembali, terima kasih atas perhatiannya.
Akhir Kata…
Baik, sekian dulu pada artikel kali ini tentang Source Code Aplikasi Penjualan Barang Kasir dengan PHP & MYSQL Kita jumpa lagi di lain kesempatan, Semoga bermanfaat. Sampai Jumpa dan Terima Kasih.







