cahyadsn/wilayah
cahyadsn/wilayah has 1,339 GitHub stars and 432 forks. GitHot measured 0 stars in 24 hours and +4 in 7 days. Last checked 2026-11-11 17:08 UTC. Last push 2026-10-31.
So werden diese Zahlen gemessen
Kode dan Data Wilayah Administrasi & Pulau Indonesia sesuai Kepmendagri No 300.2.2-2430 Tahun 2025 dengan PHP+MySQL+AJaX. Demo link : https://wilayah.cahyadsn.com/
Gemessener Sternzuwachs
- in 24h
- 0
- in 7 days
- +4
- in 15 days
- Aktualisierung verzögert
- in 1 month
- Aktualisierung verzögert
Nettoänderungen in überlappenden Zeiträumen, keine Tagessummen. Fehlende Messwerte bleiben leer. Sterne zeigen Interesse, nicht Qualität.
README.md
OriginalWILAYAH
Kode dan Data Wilayah Administrasi Pemerintahan dan Kode Pulau Indonesia sesuai Kepmendagri No 300.2.2-2430 Tahun 2025 menggunakan PHP+MySQL+AJaX
DEMO
tautan demo web apps versi 3.2.0
SCREENSHOT
Kode dan Data Wilayah Pemerintahan Indonesia dalam database :
- db/wilayah.sql sesuai dengan Kepmendagri No. 300.2.2-2430 Tahun 2025
- db/wilayah_level_1_2.sql sesuai Kepmendagri No. 300.2.2-2430 Tahun 2025 untuk data provinsi dan kab/kota dengan koordinat,elevation,timezone,luas, jumlah penduduk dan boundaries
- db/archive/wilayah_2023.sql sesuai Kepmendagri No. 100.1.1-6117 Tahun 2022
- db/archive/wilayah_2022.sql sesuai Permendagri No. 58 Tahun 2021 (revised by Kepmendagri No. 050-145 Tahun 2022)
- db/archive/wilayah_2020.sql sesuai Permendagri No. 72 Tahun 2019 (revised by Kepmendagri No.146.1-4717 Tahun 2020)
- db/archive/wilayah_2018.sql sesuai Permendagri No. 137 tahun 2017
- db/archive/wilayah_2016.sql sesuai Permendagri No. 56 Tahun 2015
- db/archive/wilayah_level_1_2-2022.sql sesuai Kepmendagri No. 100.1.1-6117 Tahun 2022 untuk data provinsi dan kab/kota dengan koordinat,elevation,timezone,luas, jumlah penduduk dan boundaries (mysql)
- db/archive/wilayah_level_1_2_postgresql.sql sesuai Kepmendagri No. 100.1.1-6117 Tahun 2022 untuk data provinsi dan kab/kota dengan koordinat,elevation,timezone,luas, jumlah penduduk dan boundaries (postgresql)
Kode dan Data Pulau Indonesia dalam database :
- db/wilayah_pulau.sql sesuai Kepmendagri No. 300.2.2-2430 Tahun 2025 untuk data pulau Indonesia dilengkapi dengan koordinat (lat, lng), status pulau (BP/TBP), luas, dan catatan
- db/archive/pulau_2025.sql sesuai Kepmendagri No 300.2.2-2138 Tahun 2025
- db/archive/pulau_2023.sql sesuai Kepmendagri No 100.1.1-6117 Tahun 2022
- db/archive/pulau_2022.sql sesuai Permendagri No 58 Tahun 2021 (revised by Kepmendagri No. 050-145 Tahun 2022)
Data Jumlah Penduduk Indonesia per propinsi dan per kabupaten/kota dalam database
- db/wilayah_penduduk.sql sesuai Kepmendagri No 300.2.2-2430 Tahun 2025 *
Data Luas wilayah Indonesia per provinsi dan per kabupaten/kota dalam database
- db/wilayah_luas.sql sesuai dengan Kepmendagri No 300.2.2-2430 Tahun 2025 dan Badan Informasi Geospasial berdasarkan Surat Deputi Bidang Informasi Geospasial Dasar Nomor B-16.10/DIGD-BIG/IGD.04.04/12/2024, Tanggal 16 Desember 2024, Hal Penghitungan Luas Wilayah di Seluruh Indonesia
TAUTAN TERKAIT
- Data kodepos vs kode wilayah administrasi pemerintahan Indonesia : https://github.com/cahyadsn/wilayah_kodepos
- Data referensi Kode dan Data Wilayah Administrasi Pemerintahan dan Pulau Indonesia : https://github.com/cahyadsn/wilayah_ref
- Data boundaries/polygon berdasarkan kode wilayah administrasi pemerintahan Indonesia : https://github.com/cahyadsn/wilayah_boundaries
- Data logo/lambang berdasarkan kode wilayah administrasi pemerintahan Indonesia (prov,kab/kota) : https://github.com/cahyadsn/wilayah_logo
- Implementasi API data kode wilayah administrasi pemerintahan Indonesia : https://github.com/cahyadsn/wilayah_api
Data Kepmendagri No 300.2.2-2430 Tahun 2025
Database Data dan Kode Wilayah Administrasi Pemerintahan sesuai Kepmendagri No 300.2.2-2430 Tahun 2025 (wilayah.sql)
| id_prov | nama | kab | kota | kec | kel | desa | luas | penduduk | pulau |
|---|---|---|---|---|---|---|---|---|---|
| 11 | Aceh* | 18 | 5 | 290 | 0 | 6500 | 56835.019 | 5623479 | 369* |
| 12 | Sumatera Utara* | 25 | 8 | 455 | 693 | 5417 | 72437.755 | 15640905 | 224* |
| 13 | Sumatera Barat | 12 | 7 | 179 | 230 | 1035 | 42107.674 | 5820359 | 219 |
| 14 | Riau | 10 | 2 | 172 | 271 | 1591 | 89900.780 | 7099297 | 144 |
| 15 | Jambi | 9 | 2 | 144 | 171 | 1414 | 49023.037 | 3834439 | 14 |
| 16 | Sumatera Selatan | 13 | 4 | 241 | 403 | 2856 | 86771.918 | 9064690 | 24 |
| 17 | Bengkulu | 9 | 1 | 129 | 172 | 1341 | 20122.210 | 2127957 | 9 |
| 18 | Lampung | 13 | 2 | 229 | 205 | 2446 | 33570.758 | 9144263 | 172 |
| 19 | Kepulauan Bangka Belitung | 6 | 1 | 47 | 84 | 309 | 16670.225 | 1549562 | 501 |
| 21 | Kepulauan Riau | 5 | 2 | 80 | 144 | 275 | 8170.375 | 2271890 | 2028 |
| 31 | DKI Jakarta | 1 | 5 | 44 | 267 | 0 | 661.530 | 11038216 | 113 |
| 32 | Jawa Barat | 18 | 9 | 627 | 646 | 5311 | 37053.331 | 51316378 | 30 |
| 33 | Jawa Tengah | 29 | 6 | 576 | 753 | 7810 | 34347.428 | 38430645 | 71 |
| 34 | DI Yogyakarta | 4 | 1 | 78 | 46 | 392 | 3170.363 | 3743365 | 37 |
| 35 | Jawa Timur | 29 | 9 | 666 | 773 | 7721 | 48055.876 | 41919906 | 538 |
| 36 | Banten | 4 | 4 | 155 | 314 | 1238 | 9355.763 | 12881374 | 80 |
| 51 | Bali | 8 | 1 | 57 | 80 | 636 | 5582.827 | 4375263 | 41 |
| 52 | Nusa Tenggara Barat | 8 | 2 | 117 | 145 | 1021 | 19631.991 | 5751295 | 430 |
| 53 | Nusa Tenggara Timur | 21 | 1 | 315 | 305 | 3137 | 46378.105 | 5700772 | 653 |
| 61 | Kalimantan Barat | 12 | 2 | 174 | 99 | 2046 | 147018.063 | 5646268 | 260 |
| 62 | Kalimantan Tengah | 13 | 1 | 136 | 139 | 1432 | 153430.363 | 2825290 | 71 |
| 63 | Kalimantan Selatan | 11 | 2 | 156 | 144 | 1872 | 37125.426 | 4305281 | 165 |
| 64 | Kalimantan Timur | 7 | 3 | 105 | 197 | 841 | 126951.758 | 4123303 | 244 |
| 65 | Kalimantan Utara | 4 | 1 | 55 | 35 | 447 | 69900.886 | 770627 | 196 |
| 71 | Sulawesi Utara | 11 | 4 | 171 | 332 | 1507 | 14488.429 | 2645291 | 382 |
| 72 | Sulawesi Tengah | 12 | 1 | 177 | 175 | 1842 | 61496.983 | 3219494 | 1600 |
| 73 | Sulawesi Selatan | 21 | 3 | 313 | 793 | 2266 | 45323.975 | 9528276 | 394 |
| 74 | Sulawesi Tenggara | 15 | 2 | 221 | 377 | 1908 | 36139.303 | 2824589 | 591 |
| 75 | Gorontalo | 5 | 1 | 77 | 72 | 657 | 12024.982 | 1250960 | 127 |
| 76 | Sulawesi Barat | 6 | 0 | 69 | 73 | 575 | 16590.667 | 1466741 | 69 |
| 81 | Maluku* | 9 | 2 | 119 | 35 | 1200 | 46133.832 | 1935586 | 1422 |
| 82 | Maluku Utara | 8 | 2 | 118 | 118 | 1067 | 31465.977 | 1394231 | 975 |
| 91 | Papua* | 8 | 1 | 105 | 51 | 948 | 81383.315 | 1102360 | 544 |
| 92 | Papua Barat | 7 | 0 | 91 | 21 | 803 | 60308.590 | 576255 | 1498 |
| 93 | Papua Selatan | 4 | 0 | 82 | 13 | 677 | 117858.969 | 562220 | 7 |
| 94 | Papua Tengah | 8 | 0 | 131 | 36 | 1172 | 61079.587 | 1369112 | 50 |
| 95 | Papua Pegunungan | 8 | 0 | 252 | 10 | 2617 | 52508.656 | 1470518 | 0 |
| 96+ | Papua Barat Daya | 5 | 1 | 132 | 74 | 939 | 39103.058 | 623186 | 3082 |
| TOTAL | 416 | 98 | 7285 | 8496 | 75266 | 1890179.784 | 284973643 | 17380 |
NOTE :
)* data mengalami perubahan dari data sebelumnya (data Kepmendagri No. 300.2.2-2138 Tahun 2025)
- Nama Provinsi diurutkan sesuai dengan Kode Wilayah Administrasi Pemerintahan
- Luas wilayah (dalam km persegi) bersumber dari Badan Informasi Geospasial berdasarkan Surat Deputi Bidang Informasi Geospasial Dasar Nomor B-16.10/DIGD-BIG/IGD.04.04/12/2024, Tanggal 16 Desember 2024, Hal Penghitungan Luas Wilayah di Seluruh Indonesia
- Jumlah penduduk bersumber dari Ditjen Kependudukan dan Pencatatan Sipil Kemendagri (Data Kependudukan Semester II Bulan Desember Tahun 2024)
- Jumlah pulau termasuk 6 pulau besar ( Sumatera, Jawa, Kalimantan, Sulawesi, Timor, dan Papua)
- Sumber data pulau Gazeter Republik Indonesia (GRI) Tahun 2024 yang diterbitkan oleh Badan Informasi Geospasial (BIG)
link demo bisa dilihat di sini : https://wilayah.cahyadsn.com/
KODEFIKASI DATA WILAYAH
Kode Wilayah Administrasi Pemerintahan adalah serangkaian angka dan titik yang menunjukkan Kode dan Data Wilayah Administrasi Pemerintahan Indonesia pada setiap daerah/wilayah mulai dari tingkat desa/kelurahan, kecamatan, kota/kabupaten, hingga provinsi yang digunakan untuk mempermudah dan mempercepat pengelolaan wilayah administrasi pemerintahan Republik Indonesia.
Berdasarkan Permendagri No 58 Tahun 2021 kodefikasi data wilayah administrasi pemerintahan dan pulau adalah sesuai aturan susunan sebagai berikut:
FUNGSI DAN TUJUAN KODE WILAYAH
- Identifikasi administratif: Memudahkan pengelolaan data dan informasi pemerintahan.
- Standarisasi nasional: Digunakan dalam dokumen resmi, statistik, dan sistem informasi pemerintah.
- Referensi geografis: Menunjukkan lokasi dan hierarki wilayah secara sistematis.
KODE WILAYAH
Kode Provinsi Kode untuk daerah provinsi terdiri dari 2 (dua) digit yaitu:
- Digit pertama Kode untuk daerah provinsi didasarkan pada letak geografis Pulau/kepulauan Indonesia yang dimulai dari arah barat ke timur; dan
- Digit kedua diisi sesuai dengan urutan pembentukan provinsi.
Kode Kabupaten/Kota Kode untuk daerah kabupaten/kota terdiri dari 4 (empat) digit, yaitu:
- Kode untuk daerah provinsi berjumlah 2 (dua) digit;
- Kode untuk daerah kabupaten/kota berjumlah 2 (dua) digit yang ditulis secara berurutan;
- Digit ketiga dan keempat dari 4 (empat) digit Kode untuk kabupaten diisi dengan angka 01 (nol satu) sampai dengan 69 (enam puluh sembilan); dan
- Digit ketiga dan keempat dari 4 (empat) digit Kode untuk kota diisi dengan angka 71 (tujuh puluh satu) sampai dengan 99 (sembilan puluh sembilan).
Kode Kecamatan Kode untuk Kecamatan berjumlah 6 (enam) digit yang terdiri dari Kode untuk daerah provinsi 2 (dua) digit, Kode untuk daerah kabupaten/kota berjumlah 2 (dua) digit, dan Kode untuk Kecamatan berjumlah 2 (dua) digit yang ditulis secara berurutan.
Kode Desa/Kelurahan Kode untuk Kelurahan dan Desa berjumlah 10 (sepuluh) digit, terdiri dari Kode untuk daerah provinsi berjumlah 2 (dua) digit, Kode untuk daerah kabupaten/kota berjumlah 2 (dua) digit, Kode untuk Kecamatan berjumlah 2 (dua) digit, dan Kode untuk Kelurahan dan Desa berjumlah 4 (empat) digit yang ditulis secara berurutan, sebagai berikut:
- urutan pertama dari 4 (empat) digit Kode untuk Kelurahan menggunakan angka 1 (satu); dan
- urutan pertama dari 4 (empat) digit Kode untuk Desa menggunakan angka 2 (dua).
- urutan pertama dari 4 (empat) digit Kode untuk Desa adat menggunakan angka 3 (tiga).
KODE PULAU
Kode Pulau berjumlah 9 (sembilan) digit terdiri dari:
- Kode untuk daerah provinsi berjumlah 2 (dua) digit,
- Kode untuk daerah kabupaten/kota berjumlah 2 (dua) digit; dan
- Kode Pulau berjumlah 5 (lima) digit dengan urutan pertama menggunakan angka 4 (empat).
REFERENSI
- Dokumen Referensi : https://github.com/cahyadsn/wilayah_ref
- Keputusan Menteri Dalam Negeri Nomor 300.2.2-2430 tahun 2025 Tentang Perubahan Atas Keputusan Menteri Dalam Negeri Nomor 300.2.2-2138 Таhun 2025 Tentang Pemberian Dan Pemutakhiran Kode, Data Wilayah Administrasi Pemerintahan, Dan Pulau (Ditetapkan pada 23 Juni 2025)
- Keputusan Menteri Dalam Negeri Nomor 300.2.2-2138 tahun 2025 Tentang Pemberian Dan Pemutakhiran Kode, Data Wilayah Administrasi Pemerintahan, Dan Pulau (Ditetapkan pada 25 April 2025)
- Keputusan Menteri Dalam Negeri Nomor 100.1.1-6117 Tahun 2022 Tentang Pemberian dan Pemutakhiran Kode, Data Wilayah Adminstrasi Pemerintahan, dan Pulau (Ditetapkan pada 9 November 2022)
- UU No 29 Tahun 2022 tentang Pembentukan Provinsi Papua Barat Daya (LN.2022/No.223, TLN No.6831, jdih.setneg.go.id: 15 hlm., 08 Desember 2022)
- UU No 14 Tahun 2022 tentang Pembentukan Provinsi Papua Selatan (LN.2022/No.157, TLN No.6803, jdih.setneg.go.id: 15 hlm., 25 Juli 2022)
- UU No 15 Tahun 2022 tentang Pembentukan Provinsi Papua Tengah (LN.2022/No.158, TLN No.6804, jdih.setneg.go.id: 14 hlm., 25 Juli 2022)
- UU No 16 Tahun 2022 tentang Pembentukan Provinsi Papua Pegunungan (LN.2022/No.159, TLN No.6805, jdih.setneg.go.id: 14 hlm., 25 Juli 2022)
- Keputusan Menteri Dalam Negeri Nomor 050-145 Tahun 2022 Tentang Pemberian Kode, Data Wilayah Administrasi Pemerintahan, Dan Pulau Tahun 2021 (Kepmendagri No. 050-145 Tahun 2022, https://www.kemendagri.go.id/arsip/detail/10857/keputusan-menteri-dalam-negeri-nomor-050145-tahun-2022-tentang-pemberian-kode-data-wilayah-administrasi-pemerintahan-dan-pulau-tahun-2021 (Ditetapkan pada tanggal 14 Februari 2022)
- Peraturan Menteri Dalam Negeri Republik Indonesia Nomor 58 Tahun 2021 Tentang Kode, Data Wilayah Administrasi Pemerintahan, Dan Pulau https://paralegal.id/peraturan/peraturan-menteri-dalam-negeri-nomor-58-tahun-2021/ (Permendagri No.58 2021, Ditetapkan pada tanggal 13 Desember 2021,Berita Negara Tahun 2021 Nomor 1391)
- Penetapan Nama, Kode Dan Jumlah Desa Seluruh Indonesia Tahun 2020 (Kepmendagri No. 146.1-4717 - 2020) http://binapemdes.kemendagri.go.id/produkhukum/detil/keputusan-menteri-dalam-negeri-nomor-1461-4717-tahun-2020 (Ditetapkan pada tanggal 21 Desember 2020)
- Kode dan Data Wilayah Administrasi Pemerintahan (Permendagri No.72-2019) https://www.kemendagri.go.id/page/read/48/peraturan-menteri-dalam-negeri-no72-tahun-2019 (Berita Negara Republik Indonesia Tahun 2019 Nomor 1327, Ditetapkan pada tanggal 8 Oktober 2019)
- Kode dan Data Wilayah Administrasi Pemerintahan (Permendagri No.137-2017) http://www.kemendagri.go.id/produk-hukum/2018/01/18/kode-dan-data-wilayah-administrasi-pemerintahan-tahun-2017 (Berita Negara Republik Indonesia Tahun 2017 Nomor 1955, Ditetapkan pada tanggal 27 Desember 2017)
- Kode dan Data Wilayah Administrasi Pemerintahan (Permendagri No.56-2015) www.kemendagri.go.id/pages/data-wilayah (Berita Negara Republik Indonesia Tahun 2015 Nomor 1045, Ditetapkan pada tanggal 29 Juni 2015)
PENGUJIAN DATABASE
Untuk memeriksa validitas sintaksis file SQL di dalam direktori db/ serta mendeteksi duplikasi nilai 'kode', Anda dapat menjalankan skrip pemeriksa (syntax checker) berbasis Node.js yang terdapat pada folder tools/:
# Memeriksa data wilayah utama
node tools/check_sql_wilayah.js
# Memeriksa data wilayah tingkat 1 & 2 (Provinsi, Kab/Kota) beserta batas wilayah (polygon)
node tools/check_sql_wilayah_level_1_2.js
# Memeriksa data luas wilayah
node tools/check_sql_wilayah_luas.js
# Memeriksa data penduduk wilayah
node tools/check_sql_wilayah_penduduk.js
# Memeriksa data pulau
node tools/check_sql_wilayah_pulau.js
CHANGE LOG
- [2026-10-27] 🆕
- Mitigasi Kerentanan Brotli Decoder Buffer Overflow / Node2Shell (CVE-2026-111497):
- Pencegahan Tingkat Web Server & Filter HTTP (
.htaccess):- Menambahkan aturan pemblokiran
mod_rewritepada.htaccess,apps/.htaccess, dansrc/.htaccessuntuk menolak langsung permintaan dengan headerContent-Encoding: bratauContent-Encoding: brotli, mencegah decoding payload terkompresi Brotli yang dapat memicu out-of-bounds write (CWE-787) pada server atau reverse proxy rentan.
- Menambahkan aturan pemblokiran
- Pengamanan Runtime PHP (
apps/inc/session.php&apps/inc/db.php):- Memperluas fungsi deteksi anomali
is_php2shell_request()untuk memvalidasiHTTP_CONTENT_ENCODINGdan menolak seketika (400 Bad Request) permintaan dengan encoding Brotli/kompresi sebelum payload diproses.
- Memperluas fungsi deteksi anomali
- Pembaruan Dependensi Ekosistem Node.js:
- Memperbarui package
undicidari versi7.30.0ke7.30.1padapackage-lock.jsonguna mengatasi kerentanan Denial of Service terkait penanganan content-encoding (GHSA-xjj6-f33q-929c).
- Memperbarui package
- Peningkatan Pengujian Unit (
tests/apps/inc/SessionTest.php):- Menambahkan pengujian
testIsPhp2shellRequestDetectsBrotliContentEncodingdantestIsPhp2shellRequestDetectsBrotliLongContentEncodingpadatests/apps/inc/SessionTest.php, menjadikan total 113 pengujian PHPUnit dan 6 pengujian Jest lulus 100%.
- Menambahkan pengujian
- Metadata Berkas:
- Memperbarui timestamp
last editpada seluruh berkas yang dimodifikasi.
- Memperbarui timestamp
- Pencegahan Tingkat Web Server & Filter HTTP (
- Mitigasi Kerentanan Brotli Decoder Buffer Overflow / Node2Shell (CVE-2026-111497):
- [2026-10-23]
- Mitigasi Kerentanan PHP2Shell (CVE-2026-109618 & CVE-2026-109619):
- Pencegahan Tingkat Konfigurasi Server & SAPI (
.htaccess&.user.ini):- Menerapkan direktif penonaktifan upload progress (
session.upload_progress.enabled = Off) dan upload berkas (file_uploads = Off) pada berkas.user.ini,apps/.user.ini, dansrc/.user.iniuntuk memitigasi serangan heap memory corruption (UAF) dan worker memory persistence pada lingkungan SAPI persisten (PHP-FPM, Apache mod_php, FastCGI). - Menambahkan aturan penulisan ulang Apache (
mod_rewrite) pada.htaccess,apps/.htaccess, dansrc/.htaccessuntuk menolak langsung permintaan yang menargetkan parameterPHP_SESSION_UPLOAD_PROGRESS, prefixupload_progress_, serta memblokir payloadmultipart/form-datakarena aplikasi ini murni berbasis query parametrik dan tidak memerlukan fitur upload berkas. - Memproteksi berkas-berkas sensitif (
.env,.user.ini,.htaccess) dari akses publik langsung via konfigurasiFilesMatch.
- Menerapkan direktif penonaktifan upload progress (
- Pengamanan Runtime PHP Pertahanan Berlapis (Defense-in-Depth):
- Menginisialisasi
@ini_set('session.upload_progress.enabled', '0')dan@ini_set('file_uploads', '0')saat runtime padaapps/inc/session.php,apps/inc/db.php,src/inc/session.php, dansrc/inc/db.php. - Menerapkan fungsi deteksi payload mencurigakan
is_php2shell_request()yang secara langsung memutus dan menolak permintaan (400 Bad Request) jika terdeteksi parameter upload progress (PHP_SESSION_UPLOAD_PROGRESSatauupload_progress) pada$_POST,$_GET,$_COOKIE,$_REQUEST, headerContent-Type: multipart/form-data, atau keberadaan array$_FILES.
- Menginisialisasi
- Peningkatan Pengujian Unit (
tests/apps/inc/SessionTest.php):- Memperluas cakupan pengujian unit PHPUnit menjadi 111 pengujian (316 asersi) dengan menambahkan 6 skenario pengujian pertahanan PHP2Shell (deteksi permintaan normal, injeksi upload progress via POST, GET, COOKIE, header multipart, dan deteksi array berkas).
- Pembaruan Panduan Administrator & Dokumentasi:
- Menambahkan advisori keamanan dan rekomendasi pembaruan runtime PHP ke versi ter-patch (
>= 8.3.36,>= 8.4.27,>= 8.5.12) serta konfigurasi mitigasi web server Nginx padaREADME.mddanapps/README.md.
- Menambahkan advisori keamanan dan rekomendasi pembaruan runtime PHP ke versi ter-patch (
- Pencegahan Tingkat Konfigurasi Server & SAPI (
- Mitigasi Kerentanan PHP2Shell (CVE-2026-109618 & CVE-2026-109619):
- [2026-10-22]
- Audit Keamanan & Perbaikan Kerentanan (Security Hardening):
- Mitigasi Modifikasi Basis Data Tanpa Autentikasi (
src/inc/geo_update.php&apps/inc/geo_update.php):- Menambahkan autentikasi sesi admin (
$_SESSION['author'] === 'cahyadsn') dan validasi token CSRF (hash_equals()) padasrc/inc/geo_update.phpuntuk mencegah pembaruan data koordinat/poligon tanpa hak akses. - Menerapkan validasi regex ketat pada parameter kode wilayah
id(/^[0-9]+(\.[0-9]+)*$/, panjang maksimal 13 karakter) serta verifikasi tipe numerik berhingga padalat,lng, dan format valid JSON padapath. - Menghapus pembocoran query SQL internal dan parameter pada respons pesan status pembaruan.
- Menambahkan invalidasi otomatis berkas cache terkait (
geo_ajax_json_cache_*dangeo_opt_cache_*) padaapps/inc/geo_update.phpketika data batas/koordinat wilayah diperbarui.
- Menambahkan autentikasi sesi admin (
- Mitigasi Cross-Site Scripting (XSS) & Attribute Injection:
- Menerapkan whitelist nilai warna tema yang diizinkan (
black,brown,pink,orange,amber,lime,green,teal,purple,indigo,blue,cyan) padasrc/index.php,src/inc/change.color.php, danapps/inc/change.color.phpserta meloloskan karakter HTML (htmlspecialchars) untuk mencegah CSS/attribute injection. - Menghapus penetapan otomatis hak akses admin
$_SESSION['author'] = 'cahyadsn'bagi pengunjung anonim padasrc/index.php. - Menambahkan fungsi sanitasi
escapeHtml()sebelum menyisipkan data nama wilayah dan pulau ke dalam popup peta Leaflet (bindPopup) padaapps/inc/geo_js.phpdansrc/inc/geo_js.phpguna mencegah kerentanan DOM-based XSS. - Memastikan pelolosan entitas HTML (
htmlspecialchars) pada pembuatan elemen opsi dropdown wilayah disrc/inc/geo_ajax.php.
- Menerapkan whitelist nilai warna tema yang diizinkan (
- Perbaikan Kebocoran Token CSRF via Shared Proxy Caching (
apps/index.php):- Mengganti header caching pada
apps/index.phpmenjadiCache-Control: private, no-cache, no-store, must-revalidatedanPragma: no-cacheagar halaman yang memuat token CSRF per-sesi tidak di-cache oleh proxy/CDN bersama (seperti Cloudflare atau reverse proxy). - Menambahkan HTTP Security Headers pertahanan berlapis:
X-Content-Type-Options: nosniff,X-Frame-Options: SAMEORIGIN, danReferrer-Policy: strict-origin-when-cross-origin.
- Mengganti header caching pada
- Validasi Input Geospasial & Pencegahan Galat SQL / DoS (
reverse_lookup.php&geo_ajax.php):- Memvalidasi parameter koordinat
latdanlngpadaapps/inc/reverse_lookup.phpagar bernilai numerik, berhingga (is_finite), serta berada dalam rentang valid koordinat geografis ([-90, 90]dan[-180, 180]), mencegah kegagalan kalkulasi trigonometri pada query basis data. - Menambahkan pengaman pengecekan
!empty($codes)sebelum eksekusi query hierarki nama wilayah untuk mencegah galat sintaks SQLIN (). - Memvalidasi format string
$_GET['id']padaapps/inc/geo_ajax.phpdanindex.phpuntuk mencegah disk exhaustion / cache flood dari input parameter acak.
- Memvalidasi parameter koordinat
- Penguatan Konfigurasi Sesi & Masking Informasi Sensitif Basis Data:
- Mengaktifkan
session.use_strict_mode = 1padaapps/inc/session.phpdansrc/inc/session.phpuntuk memitigasi serangan session fixation. - Mengaburkan rincian pesan kesalahan koneksi PDO pada
src/inc/db.phpdan mencatatnya ke log server (error_log()).
- Mengaktifkan
- Peningkatan Pengujian Unit & Otomasi CI:
- Menambahkan script
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js"padapackage.jsondan mengonfigurasi pemuatan modul ESM dinamis (await import('jsdom')) padatests/apps/inc/geo_js.test.js. - Menambahkan isolasi pembersihan global state (
tearDown()untuk pembersihan$GLOBALS['db']), penonaktifan backup globals padaphpunit.xml, serta perbaikan asersi padatests/apps/inc/ReverseLookupTest.phpdantests/apps/inc/GeoUpdateTest.php, memastikan seluruh 105 pengujian PHPUnit dan seluruh pengujian Jest lulus 100%.
- Menambahkan script
- Metadata Berkas:
- Memperbarui timestamp
last editpada seluruh berkas yang dimodifikasi.
- Memperbarui timestamp
- Mitigasi Modifikasi Basis Data Tanpa Autentikasi (
- Audit Keamanan & Perbaikan Kerentanan (Security Hardening):
- [2026-10-20]
- Peningkatan Keamanan Cache Key Generation (SHA-256):
- Mengganti fungsi
md5()menjadihash('sha256', ...)dalam pembuatan nama berkas cache padaapps/inc/geo_ajax.php(geo_ajax_json_cache_*dangeo_opt_cache_*),index.php(index_opt_cache_*), dan pengujian unittests/AppsIndexTest.phpuntuk memitigasi kerentanan collision attacks dan cache poisoning.
- Mengganti fungsi
- Refactoring & Optimasi Traversal Koordinat (
geo_ajax.php&geo_utils.php):- Menghapus duplikasi fungsi
isPathReasonable()padaapps/inc/geo_ajax.phpdan beralih ke fungsi bersamaisPathNearCentroid()dariapps/inc/geo_utils.phpguna mereduksi kompleksitas kode (mengatasi isu kompleksitas CodeFactor). - Mengoptimalkan traversal array koordinat poligon batas (bounding box) pada
isPathNearCentroid()dengan single-pass iteration dan penambahan validasi struktur elemen awalisset($points[0][0], $points[0][1]). - Memperbarui pengujian unit
tests/apps/inc/GeoAjaxTest.phpagar selaras denganisPathNearCentroid().
- Menghapus duplikasi fungsi
- Optimasi Reverse Geocoding (
reverse_lookup.php):- Mengurangi overhead iterasi pada
apps/inc/reverse_lookup.phpdengan mengeliminasi redundansi pengecekan tipe datais_stringdanjson_decodepada kandidat koordinat batas yang telah didekode sebelumnya.
- Mengurangi overhead iterasi pada
- Peningkatan Pengujian Unit (
tests/inc/GeoUtilsTest.php):- Menambahkan pengujian
testPathAsArrayAndJsonStringpadatests/inc/GeoUtilsTest.phpuntuk memverifikasi konsistensi perilakuisPathNearCentroid()baik dengan format string JSON maupun array terevaluasi.
- Menambahkan pengujian
- Pembaruan Dependensi:
- Memperbarui package
source-map-jsdari versi1.2.1ke1.2.2padapackage-lock.json.
- Memperbarui package
- Metadata Berkas:
- Memperbarui timestamp
last editpada berkas-berkas yang dimodifikasi.
- Memperbarui timestamp
- Peningkatan Keamanan Cache Key Generation (SHA-256):
- [2026-10-08]
- Panduan Instalasi & Pemutakhiran Web Apps (
apps/v3.2.0):- Menambahkan panduan instalasi komprehensif pada
apps/README.mdyang mencakup prasyarat sistem, langkah pembuatan & impor basis data SQL, konfigurasi variabel lingkungan (.env), izin folder cache, serta panduan menjalankan aplikasi via PHP built-in server maupun web server stack (Laragon / XAMPP). - Memutakhirkan versi aplikasi web menjadi
v3.2.0pada konfigurasiapps/.env,apps/.env.example, danapps/index.php. - Mengabaikan direktori cache pengujian otomatis (
/tests/apps/cache/*) pada.gitignore.
- Menambahkan panduan instalasi komprehensif pada
- Revisi & Sinkronisasi Data Pulau (
db/wilayah_pulau.sql):- Memverifikasi dan memvalidasi integritas sintaks SQL serta format data pulau sesuai Kepmendagri No. 300.2.2-2430 Tahun 2025 dengan pengujian
tools/check_sql_wilayah_pulau.jsunpublished.
- Memverifikasi dan memvalidasi integritas sintaks SQL serta format data pulau sesuai Kepmendagri No. 300.2.2-2430 Tahun 2025 dengan pengujian
- Panduan Instalasi & Pemutakhiran Web Apps (
- [2026-10-07]
- Revisi & Verifikasi Data Pulau (
db/wilayah_pulau.sql):- Memverifikasi dan memvalidasi integritas sintaks SQL serta keunikan kode data pulau (17.374 baris pulau) sesuai Kepmendagri No. 300.2.2-2430 Tahun 2025 menggunakan skrip pemeriksa
tools/check_sql_wilayah_pulau.jsunpublished. - Memperbarui dokumentasi struktur tabel
wilayah_pulau(kode,nama,lat,lng,status,luas,notes) padaREADME.md.
- Memverifikasi dan memvalidasi integritas sintaks SQL serta keunikan kode data pulau (17.374 baris pulau) sesuai Kepmendagri No. 300.2.2-2430 Tahun 2025 menggunakan skrip pemeriksa
- Revisi & Verifikasi Data Pulau (
- [2026-10-05]
- Daftar Pulau di Panel Kanan Web Apps (
apps/index.php):- Menambahkan panel samping kanan interaktif (
#islandPanel) yang menampilkan daftar data kode dan nama pulau sesuai lokasi aktif provinsi (level 1) atau kabupaten/kota (level 2). - Menambahkan badge jumlah pulau (
#islandCount), badge nama lokasi aktif (#islandLocationName), kotak pencarian instan (real-time filter by name & code), dan daftar pulau scrollable yang responsif. - Integrasi peta: Mengklik salah satu pulau di daftar akan memusatkan peta (flyTo) ke titik koordinat pulau, memunculkan penanda (marker) beserta popup informasi nama, kode, status, dan luas pulau, serta memperbarui info strip koordinat.
- Menambahkan tombol ciutkan/bentangkan panel pulau (
#islandToggle) dengan persistensi status dilocalStorage(wilayahIslandPanelCollapsed).
- Menambahkan panel samping kanan interaktif (
- Backend & Database:
- Menambahkan konfigurasi
$tbl_pulau = "wilayah_pulau";padaapps/inc/db.php. - Menambahkan fungsi pembantu
getIslandsForCode($db, $tbl_pulau, $kode)padaapps/inc/geo_helpers.phpuntuk query data pulau berdasarkan prefix kode wilayah (2 digit provinsi atau 5 karakter kabupaten/kota). - Mengintegrasikan data pulau ke dalam respons JSON pada endpoint AJAX
apps/inc/geo_ajax.php.
- Menambahkan konfigurasi
- Frontend Script & Styling:
- Menambahkan fungsi penanganan data pulau (
updateIslandPanel,renderIslandItems,filterIslands,onSelectIsland,resetIslandPanel) padaapps/inc/geo_js.php. - Menambahkan logika interaksi dan toggle panel pulau pada
apps/js/wilayah.jsdanapps/js/wilayah.min.js. - Menambahkan stylesheet komponen panel pulau dengan dukungan penuh tema dark dan light serta layout responsif ponsel pada
apps/css/styles.cssdanapps/css/styles.min.css.
- Menambahkan fungsi penanganan data pulau (
- Pengujian Unit:
- Menambahkan test suite
getIslandsForCodepadatests/inc/GeoHelpersTest.php. - Menambahkan asersi elemen DOM panel pulau dan konfigurasi
$tbl_pulaupadatests/apps/index_php_test.php.
- Menambahkan test suite
- Metadata Berkas:
- Memperbarui timestamp
last editpada seluruh berkas yang dimodifikasi.
- Memperbarui timestamp
- Daftar Pulau di Panel Kanan Web Apps (
- [2026-10-01]
- Add
.envfile support inapps/for database credentials and application version (APP_VER). - Remove hardcoded default database credentials in
apps/inc/db.phpand load them from.envor environment variables. - Dynamically display application version in
apps/index.phpsourced fromAPP_VER(3.1.0). - Update file header
last edittimestamps on modified files.
- Add
- [2026-09-30]
- Implement file-based HTML caching for region options (
cache/opt_cache_*with 24-hour TTL) inindex.phpto eliminate recurring databaseLIKEqueries for frequently queried regions, and updatetests/IndexGetParameterTest.php. - Extract
get_csrf_token_html()helper inapps/inc/session.phpto encapsulate CSRF token retrieval and HTML escaping, reuse acrossapps/login.phpandapps/index.php, and updatetests/AppsLoginTest.php. - Bump
undicidependency from 7.29.0 to 7.30.0 inpackage-lock.json. - Update file header
last edittimestamps on modified files.
- Implement file-based HTML caching for region options (
- [2026-09-25]
- Add PHPUnit unit test suite for
apps/logout.phpintests/AppsLogoutTest.phpto verify session destruction, cookie clearance, and redirect flows. - Optimize
pointInRinginapps/inc/reverse_lookup.phpby moving coordinate array structure validation outside the ray-casting loop. - Verify and validate unit test coverage for
apps/js/ajax.jsintests/apps/js/ajax.test.js. - Update file header
last edittimestamps on modified files.
- Add PHPUnit unit test suite for
- [2026-09-23]
- Extract inline styles from
index.phpinto a dedicated stylesheetcss/style.css. - Remove redundant
json_encodeinapps/inc/geo_ajax.phpto streamline response serialization and caching logic. - Refactor coordinate parsing point extraction using null coalescing operators in
apps/inc/geo_ajax.phpandapps/inc/geo_utils.php. - Remove unused legacy stylesheet
apps/css/wilayah.php. - Update file header
last edittimestamps on modified files.
- Extract inline styles from
- [2026-09-15]
- Optimize bounding box calculation using native PHP array functions (
array_column(),min(),max()) inisPathReasonable()withinapps/inc/geo_ajax.php.
- Optimize bounding box calculation using native PHP array functions (
- [2026-09-11]
- Extract shared province HTML dropdown generation into
getProvinceOptionsHTML()inapps/inc/geo_helpers.phpand reuse acrossapps/index.phpandindex.php. - Return raw array from
fallbackBox()inapps/inc/geo_helpers.phpto avoid redundantjson_decodecycles during reverse lookup spatial calculations. - Optimize bounding box coordinate presence checks with
isset()inapps/inc/geo_ajax.php. - Update file header
last edittimestamps on modified files to match Git commit modification history.
- Extract shared province HTML dropdown generation into
- [2026-09-09]
- Add Jest unit test suite for
setSafeSelectOptions()intests/apps/inc/geo_js.test.jsto verify DOM option parsing, sanitization, and clearing. - Add unit test coverage for
pointInRingwith invalid string coordinate arrays intests/apps/inc/ReverseLookupTest.php. - Add unit test coverage for
isPathNearCentroidhandling invalid and non-numeric coordinate items intests/inc/GeoUtilsTest.php.
- Add Jest unit test suite for
- [2026-09-08]
- Mitigate Login CSRF vulnerability in
apps/login.phpwith CSRF session token initialization, form injection, and constant-timehash_equals()validation on POST requests; updatetests/AppsLoginTest.phpwith invalid token test coverage. - Add Jest unit test suite for
do_ajax()intests/apps/js/ajax.test.jsand addjestdevDependency topackage.json.
- Mitigate Login CSRF vulnerability in
Riwayat perubahan selengkapnya dapat dilihat pada change_log.md.
INFORMASI
- data kode wilayah pemerintahan diperoleh dari https://drive.google.com/file/d/1o_m621D00TtwCwQMLn8XUnV3nolamPDm/view?usp=sharing
- data polygon diperoleh dari website BIG(Badan Informasi Geospatial) di https://tanahair.indonesia.go.id
- data latitude/longitude dari google maps
DONASI
- untuk donasi via transfer
- Bank BCA Digital (Blu) (501) 000 576 776 186
- Bank Jago (542) 5003 5796 1022
- Bank Sinarmas (153) 005 462 4719
- Bank Syariah Indonesia (BSI) 821-342-5550
- untuk donasi via PayPal [https://paypal.me/cahyadwiana]
- untuk donasi via QRIS CAHYADSN ID1022183125288 :

Ähnliche Projekte entdecken
Asabeneh/30-Days-Of-Python
Die Programmier-Challenge 30 Days of Python ist eine Schritt-für-Schritt-Anleitung, um die Programmiersprache Python in 30 Tagen zu lernen. Diese Challenge kann mehr als 100 Tage dauern. Gehe in deinem eigenen Tempo vor. Diese Videos können ebenfalls helfen: https://www.youtube.com/channel/UC7PNRuno1rzYPb1xLa4yktw
78,618 Sternegrafana/grafana
Offene und kombinierbare Plattform für Observability und Datenvisualisierung. Visualisiert Metriken, Logs und Traces aus mehreren Quellen wie Prometheus, Loki, Elasticsearch, InfluxDB, Postgres und vielen weiteren.
77,859 Sterneredis/redis
Für Entwickler, die echtzeitfähige, datengesteuerte Anwendungen erstellen, ist Redis der bevorzugte, schnellste und funktionsreichste Cache, Datenstrukturserver und die entsprechende Abfrageengine für Dokumente und Vektoren.
77,472 Sterneapache/superset
Apache Superset ist eine Plattform für Datenvisualisierung und Datenexploration.
75,495 Sterne
