Pendekatan Kami terhadap Keamanan

Terakhir Diperbarui: 1 November 2026

GeckoFlag adalah software yang berjalan di server Anda sendiri. Agar Anda dapat mempercayakan data proyek Anda dengan tenang, pengembang sendiri melakukan pengujian keamanan pada setiap rilis dan mempublikasikan isi serta hasilnya di halaman ini.

Halaman ini adalah catatan pengujian mandiri oleh pengembangIni bukan sertifikasi atau audit oleh pihak ketiga. Kami juga mempublikasikan apa saja yang diuji, sehingga Anda dapat menggunakannya sebagai bahan pertimbangan saat memutuskan untuk menggunakan GeckoFlag.

Langkah Keamanan dalam Desain

GeckoFlag menyertakan langkah-langkah keamanan berikut secara standar. Semuanya aktif tanpa perlu pengaturan apa pun.

Perlindungan kata sandi

Kata sandi tidak disimpan dalam bentuk teks biasa, melainkan di-hash dengan bcrypt sebelum disimpan. Token reset kata sandi juga disimpan dalam bentuk hash, dan jumlah permintaan reset kata sandi dibatasi.

Pembatasan percobaan login

Login yang gagal dihitung per akun dan per alamat IP sumber koneksi, dan login dibatasi sementara jika jumlahnya melebihi batas tertentu. Ini meredam serangan brute force dan serangan yang menargetkan banyak akun.

Perlindungan CSRF

Token diverifikasi pada setiap pengiriman formulir untuk mencegah operasi palsu dari situs eksternal.

Perlindungan XSS

Rich text pada isu, komentar, Wiki, catatan, dan lainnya disimpan dan ditampilkan dengan hanya mempertahankan tag yang diizinkan oleh HTML Purifier. Tautan hanya diizinkan untuk http dan https. Teks yang dihasilkan oleh AI juga selalu melalui proses yang sama sebelum disimpan.

Perlindungan SQL injection

Operasi database menggunakan ORM CakePHP 5 dan prepared statement.

Validasi header Host

Tautan dalam email reset kata sandi, undangan, dan notifikasi dibuat berdasarkan domain yang terdaftar, bukan header Host dari permintaan. Header Host yang tidak sah tidak dapat digunakan untuk mengganti tautan dalam email dengan alamat eksternal.

Penyimpanan file

Gambar isu dan file proyek disimpan di luar folder publik, dan hanya disajikan setelah dipastikan bahwa orang yang melihatnya adalah anggota proyek. File dengan ekstensi yang dapat dijalankan, seperti PHP, tidak diterima.

Enkripsi API key

API key Claude untuk fitur AI dienkripsi sebelum disimpan di database.

Token API integrasi Claude

Integrasi Claude nonaktif secara bawaan dan hanya dapat digunakan jika administrator mengaktifkannya dan mengizinkannya untuk setiap pengguna. Untuk setiap token API hanya hash-nya yang disimpan, dan masa berlaku dapat ditetapkan. Mengubah kata sandi membuat token tidak berlaku. API memeriksa izin yang sama seperti layar, dan token hanya-baca tidak dapat mengubah apa pun.

Pembatasan alamat IP

Administrator dapat membatasi alamat IP yang diizinkan untuk mengakses.

Penutupan installer

Setelah penyiapan selesai, layar installer tidak dapat diakses lagi.

Perlindungan folder non-publik

Akses langsung ke folder konfigurasi, log, kode sumber, dan sejenisnya ditolak secara standar di Apache (untuk Nginx, lihat pengaturan yang disarankan).

Backup otomatis sebelum pembaruan

Backup dibuat secara otomatis sebelum pembaruan software.

Verifikasi tanda tangan file pembaruan

File pembaruan resmi dilengkapi tanda tangan digital pengembang (Ed25519). Sebelum pembaruan, tanda tangan dan isi semua file dicocokkan, dan file yang telah dimodifikasi atau file pembaruan yang tidak resmi tidak akan diterapkan.

Validasi unggahan gambar

Format gambar seperti avatar, thumbnail, dan logo ditentukan dari isi filenya, lalu disimpan dengan nama file acak. Dari folder penyimpanan gambar, hanya file gambar yang disajikan (di Apache). SVG tidak diterima.

Header keamanan

Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, dan Permissions-Policy dikirim untuk mencegah clickjacking dan kebocoran informasi ke situs eksternal. Jika dijalankan melalui HTTPS, Strict-Transport-Security juga dikirim agar browser selalu terhubung melalui HTTPS.

Manajemen sesi

Sesi dibuat ulang setiap kali login. Perubahan izin, penghapusan akun, dan perubahan kata sandi langsung berlaku juga pada sesi yang sedang login. Mengubah alamat email dan kata sandi memerlukan kata sandi saat ini.

Pengujian Keamanan pada Setiap Rilis

Sebelum merilis versi baru, kami melakukan pengujian berikut. Pengujian dilakukan di lingkungan pengujian dengan konfigurasi yang sama seperti lingkungan produksi, dan tidak dilakukan terhadap layanan yang sedang berjalan atau server pelanggan. Pengujian yang dilakukan untuk versi terbaru dicantumkan di “Hasil Pengujian Versi Terbaru”.

KategoriIsi pengujianAlat / standar yang digunakanFrekuensi
Library dependensiMemeriksa apakah library yang digunakan memiliki kerentanan yang diketahui, dan membuat daftar library yang digunakan (SBOM)composer audit, OSV-Scanner, CycloneDXSetiap rilis
Analisis statisMendeteksi dari kode sumber jalur di mana nilai input mencapai proses berbahaya (XSS, SQL injection, dll.)Psalm (analisis taint), PHPStan (level 5), SemgrepSetiap rilis
Kebocoran informasi rahasiaApakah kata sandi atau API key terdapat dalam kode sumber atau file distribusigitleaksSetiap rilis
Pemindaian dinamisDalam keadaan login sebagai administrator dan pengguna biasa, mengirim permintaan serangan sungguhan dan memeriksa responsnyaNucleiSetiap rilis
Pengujian izinApakah isu, file, dan catatan dari proyek yang tidak diikuti dapat dilihat atau dioperasikan dengan mengubah ID di URLPengujian otomatis (PHPUnit), pemeriksaan manualSetiap rilis
Unggahan fileApakah file yang dapat dijalankan, file yang menyamar sebagai gambar, ZIP yang memanipulasi path, dan sejenisnya ditolakCode review, pemeriksaan manualSetiap rilis
XSSMemasukkan string serangan ke deskripsi isu, komentar, Wiki, dan teks yang dihasilkan AI, lalu memeriksa apakah skrip dijalankanCode review, pemeriksaan manualSetiap rilis
Pemeriksaan per konfigurasi serverUntuk Apache dan Nginx, serta setiap cara penempatan folder publik, apakah file konfigurasi atau log dapat diakses secara langsungPemeriksaan manualSetiap rilis
Ekstensi integrasi ClaudeKerentanan yang diketahui pada library yang digunakan ekstensi, penanganan token API, dan pembatasan tujuan permintaannpm audit, gitleaks, code reviewSetiap rilis ekstensi
Pemeriksaan mandiri dengan daftar periksaMemeriksa autentikasi, sesi, validasi input, penanganan error, dan lainnya per itemMengacu pada OWASP ASVS 5.0 Level 1, IPA (Jepang): How to Secure Your WebsiteSetiap versi mayor
Situs resmiPengaturan HTTPS dan header keamanan geckoflag.comSSL Labs, Mozilla ObservatorySebulan sekali

Jika ditemukan masalah dengan tingkat keparahan “Tinggi” atau “Sedang”, rilis tidak dilakukan sampai masalah tersebut diperbaiki dan diuji ulang. Untuk tingkat “Rendah”, isinya ditinjau, lalu diperbaiki atau dicatat alasan mengapa tidak berdampak.

Kebijakan Pembaruan Library Dependensi

Kerentanan yang diketahui pada library yang digunakan GeckoFlag (seperti CakePHP) diperiksa pada setiap rilis. Jika ditemukan kerentanan yang berdampak pada GeckoFlag, kami akan merilis versi perbaikan dengan target waktu berikut.

  • Tingkat keparahan “Kritis” dan “Tinggi”: dalam 14 hari sejak diumumkan
  • Tingkat keparahan “Sedang”: dalam 30 hari sejak diumumkan
  • Tingkat keparahan “Rendah”: pada rilis berikutnya (paling lambat dalam 90 hari)

Kerentanan yang tidak berdampak pada cara GeckoFlag menggunakan library tersebut pun akan diperbarui ke versi yang sudah diperbaiki pada rilis berikutnya. Library untuk pengembangan tidak disertakan dalam file distribusi.

Hasil Pengujian Versi Terbaru: v1.11.0

Di v1.11.0, tidak ada masalah dengan tingkat keparahan “Tinggi” atau “Sedang” yang belum diperbaiki (tanggal pengujian: 2026-10-28).

Pengujian kali ini mencakup perubahan sejak v1.10.0 (integrasi Claude, warna teks dan latar serta garis pemisah pada teks kaya, dan lainnya), dan sekaligus memperbaiki masalah yang sudah ada di versi sebelumnya. Jika Anda menggunakan v1.10.0 atau versi lebih lama, kami menyarankan pembaruan ke v1.11.0.

PHP / DatabasePHP 8.3, MariaDB 10.11
Web serverApache 2.4, Nginx 1.24 (PHP-FPM 8.3), server bawaan PHP
Lokasi pengujianLingkungan pengujian pengembang
PengujianAlat yang digunakan (versi)Temuan (Tinggi / Sedang / Rendah)Tindakan
Library dependensiGitHub Advisory Database, FriendsOfPHP security-advisories (data per 2026-10-28; 89 paket)0 / 0 / 0Tidak ada kerentanan yang diketahui pada library yang disertakan dalam file distribusi. Kerentanan yang diketahui pada library khusus pengembangan telah diatasi dengan pembaruan di v1.11.0 (library khusus pengembangan tidak disertakan dalam file distribusi)
Analisis statis / code reviewPsalm 5.26.1 (analisis taint), PHPStan 2.1.17 (level 5), Semgrep 1.182.1, code review manual (perubahan sejak v1.10.0: API dan token integrasi Claude, teks kaya, tetap masuk, pembaruan perangkat lunak; serta keluaran tautan di semua layar)1 / 1 / 3Masalah “Tinggi” dan “Sedang” serta 2 masalah “Rendah” telah diperbaiki di v1.11.0. Satu masalah “Rendah” yang tersisa hanya terjadi melalui tindakan pengguna itu sendiri, dan dampaknya dipastikan terbatas. Masalah “Tinggi” sudah ada sejak versi sebelumnya
Kebocoran informasi rahasiagitleaks 8.24.20 / 0 / 0Kode sumber dan file distribusi sama-sama diperiksa. Kedua deteksi merupakan positif palsu (seperti string contoh di library eksternal)
Konfirmasi perbaikanPemeriksaan operasional di lingkungan pengujian (PHP 8.3, MariaDB 10.11, Apache 2.4, Nginx 1.24, Chromium)—Untuk setiap temuan, dipastikan bahwa masalah sebelum perbaikan tidak lagi dapat direproduksi
Pemindaian dinamisNuclei v3.11.1 (templat v10.5.1), tanpa login serta sebagai administrator dan anggota0 / 0 / 0Tidak ada masalah
Pengujian izinPHPUnit 12.5 (454 pengujian otomatis. Selain pemeriksaan sebelumnya, dipastikan bahwa API integrasi Claude menolak permintaan tanpa token, dengan token hanya-baca, dari pengguna yang tidak diizinkan, dan saat fitur dinonaktifkan, serta tidak pernah menjangkau proyek yang tidak diikuti pengguna)0 / 0 / 0Tidak ada masalah
Pemeriksaan per konfigurasi serverManual (2 cara penempatan folder publik di Apache 2.4 dan Nginx 1.24; 39 URL termasuk file konfigurasi, log, sesi, dan file tersimpan)0 / 0 / 1Diperbaiki di v1.11.0: akses langsung ke folder file versi lama (files) kini juga ditolak sepenuhnya di Apache. Tidak ada masalah lain
Daftar periksaOWASP ASVS 5.0 Level 1 (70 item)Memenuhi 50 dari 56 item yang berlakuTidak ditinjau kali ini (hasil v1.10.0 tetap berlaku)
Ekstensi integrasi Claudenpm audit, gitleaks 8.24.2, mcpb validate, code review manual (geckoflag-1.0.0.mcpb)0 / 0 / 0Tidak ada kerentanan yang diketahui yang memengaruhi library dalam file distribusi. Penanganan token API dan pembatasan tujuan permintaan (hanya HTTPS, tidak mengikuti pengalihan) telah diperiksa

Hasil pengujian semua versi, termasuk versi sebelumnya, tersedia di “Hasil Pengujian Sebelumnya”.

Cakupan yang Tidak Diuji

Pengujian di atas memiliki keterbatasan berikut. Saat mempertimbangkan untuk menggunakan GeckoFlag, harap periksa juga poin-poin ini.

  • Belum ada pengujian oleh pihak ketiga.Saat ini, code review atau penetration testing oleh pakar eksternal belum dilakukan.
  • Lingkungan server pelanggan berada di luar cakupan pengujian.Keamanan sangat bergantung pada pengaturan dan status pembaruan OS, web server, PHP, dan database.
  • Tidak semua lingkungan hosting telah diperiksa.Konfigurasi yang diuji terbatas pada yang tercantum di “Hasil Pengujian Versi Terbaru”.
  • Layanan eksternal berada di luar cakupan.Keamanan API Anthropic yang digunakan oleh fitur AI, aplikasi desktop Claude yang digunakan oleh integrasi Claude, server pengiriman email, dan sejenisnya bergantung pada masing-masing penyedia.
  • Tentang masalah yang tidak terdeteksi oleh alat otomatis.Jenis masalah yang tidak terdeteksi oleh alat (seperti kekurangan dalam logika bisnis) dilengkapi dengan pengujian manual, tetapi tidak semuanya dapat tercakup.

Melaporkan Kerentanan yang Anda Temukan

Jika Anda menemukan masalah yang diduga merupakan kerentanan GeckoFlag, harap hubungi kami langsung melalui saluran di bawah ini, bukan di forum publik. Pengembang membaca sendiri setiap laporan.

Saluran pelaporan: Hubungi kami melalui formulir kontak dengan memilih jenis pertanyaan “Laporan Kerentanan”

Informasi yang Perlu Disertakan

  • Versi yang terdampak, serta layar atau fitur yang bermasalah
  • Langkah-langkah untuk mereproduksi (sejauh memungkinkan)
  • Dampak yang diperkirakan
  • Lingkungan server Anda (PHP, web server, dll.)

Permohonan

  • Lakukan verifikasi di lingkungan yang Anda kelola sendiri, dan jangan melakukan tindakan yang bersifat menyerang terhadap GeckoFlag yang dioperasikan oleh orang lain atau terhadap geckoflag.com.

Jika Anda menginginkannya, nama Anda akan dicantumkan sebagai ucapan terima kasih dalam informasi keamanan versi perbaikan.

SHA-256 File Distribusi

Anda dapat memastikan bahwa file yang diunduh identik dengan file resmi dengan mencocokkannya dengan nilai berikut.

FileSHA-256
GeckoFlag - 1.11.0.zip33354ac588c4cb4de2953c3c26a484953c2bb886f38196ba4bcf4fe629648399
geckoflag-1.0.0.mcpb44f2c6dfc9f437856d0680920a327820d757a14116064faa6e46ad8a961d0747

Cara memeriksa: di Windows, jalankan Get-FileHash NamaFile -Algorithm SHA256 di PowerShell; di macOS dan Linux, jalankan shasum -a 256 NamaFile.

Pengaturan yang Disarankan untuk Penggunaan yang Aman

Keamanan GeckoFlag juga bergantung pada pengaturan server tempat GeckoFlag dipasang. Kami menyarankan pengaturan berikut.

  1. Selesaikan instalasi segera setelah mengunggah: Selama instalasi belum selesai, siapa pun yang mengetahui URL-nya dapat membuka layar penyiapan. Setelah file ditempatkan, segera selesaikan instalasi.
  2. Jalankan melalui HTTPS: Informasi login dan isi proyek dienkripsi selama komunikasi. Banyak layanan shared hosting menyediakan sertifikat SSL gratis. Perlu diperhatikan bahwa setelah situs dibuka sekali melalui HTTPS, browser akan terhubung ke alamat tersebut melalui HTTPS selama 1 tahun berikutnya (sejak v1.10.0). Harap berhati-hati jika Anda berencana berhenti menggunakan HTTPS.
  3. Atur folder publik (document root) ke webroot: File konfigurasi dan log akan berada di lokasi yang tidak dapat dilihat dari Web.
  4. Jika menggunakan Nginx, tambahkan pengaturan: .htaccess tidak berfungsi di Nginx. Tambahkan pengaturan terpisah untuk menolak akses ke folder non-publik dan agar PHP tidak dijalankan di folder unggahan gambar (webroot/img). Lihat contoh konfigurasi di Panduan (Instalasi).
  5. Perbarui ke versi terbaru: Perbaikan keamanan disediakan dalam versi terbaru. Dapatkan file pembaruan dari situs resmi dan periksa SHA-256-nya. Sejak v1.10.0, tanda tangan juga diverifikasi secara otomatis sebelum pembaruan.
  6. Gunakan versi PHP dan database yang masih didukung: PHP yang sudah habis masa dukungannya tidak lagi menerima perbaikan.
  7. Lindungi akun administrator: Gunakan kata sandi yang panjang dan sulit ditebak, dan berikan hak administrator hanya kepada orang yang membutuhkannya.
  8. Gunakan pembatasan IP untuk penggunaan internal: Dari “Pengaturan”, Anda dapat membatasi alamat IP yang dapat mengakses.
  9. Buat backup secara berkala: Simpan database dan file yang diunggah di lokasi yang terpisah dari server.

Pertanyaan tentang keamanan