diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..442a564 --- /dev/null +++ b/.env.example @@ -0,0 +1,9 @@ +# Google Gemini API Configuration +# Get your API key from: https://makersuite.google.com/app/apikey +GEMINI_API_KEY=your_gemini_api_key_here + +# Database Configuration (if needed in future) +# DB_HOST=localhost +# DB_NAME=sidak_db +# DB_USER=root +# DB_PASSWORD= \ No newline at end of file diff --git a/.gitignore b/.gitignore index db391e3..ae77657 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,8 @@ vendor/ # Uploads foto/ + +# API Keys and Environment Variables +admin/api/config_api.php +.env +.env.*.local diff --git a/README_API_SECURITY.md b/README_API_SECURITY.md new file mode 100644 index 0000000..981d948 --- /dev/null +++ b/README_API_SECURITY.md @@ -0,0 +1,115 @@ +# 🔐 Keamanan API Key SIDAK + +## **⚠️ PENTING: API Key Terdeteksi di Repository Git** + +File `admin/api/config_api.php` sebelumnya mengandung kunci API Gemini yang terekspos di repository Git. Kunci ini telah diamankan dengan sistem environment variables. + +## **🛡️ Langkah-Langkah Pengamanan yang Telah Dilakukan:** + +1. **API Key dihapus dari Git tracking:** + ```bash + git rm --cached admin/api/config_api.php + ``` + +2. **File konfigurasi dimodifikasi untuk menggunakan environment variables:** + - `admin/api/config_api.php` sekarang membaca dari file `.env` + - Gunakan template `.env.example` untuk membuat `.env` + +3. **File sensitif ditambahkan ke `.gitignore`:** + ``` + admin/api/config_api.php + .env + .env.*.local + ``` + +## **🚀 Deployment Instructions:** + +### **1. Untuk Development Lokal:** +```bash +# Salin template .env +cp .env.example .env + +# Edit .env dengan API key Anda +nano .env # atau editor favorit Anda +``` + +### **2. Untuk Production Server:** +```bash +# Buat file .env di server +cat > /var/www/sidak/.env << 'EOF' +# Google Gemini API Configuration +GEMINI_API_KEY=your_actual_production_key_here +EOF + +# Pastikan permission aman +chmod 600 /var/www/sidak/.env +chown www-data:www-data /var/www/sidak/.env +``` + +### **3. Get New API Key (jika perlu):** +1. Kunjungi [Google AI Studio](https://makersuite.google.com/app/apikey) +2. Login dengan akun Google +3. Create API Key → Copy key baru +4. Update file `.env` di server + +## **📁 Struktur File yang Aman:** + +``` +sidak/ +├── .env # ⚠️ JANGAN commit (sudah di .gitignore) +├── .env.example # ✅ Template aman untuk commit +├── .gitignore # ✅ Menyertakan .env dan config_api.php +├── admin/ +│ └── api/ +│ ├── config_api.php # ✅ Membaca dari environment variables +│ └── ocr_helper.php # ✅ Menggunakan GEMINI_API_KEY dari config +└── README_API_SECURITY.md # ✅ Dokumentasi ini +``` + +## **🔧 Testing Configuration:** + +Untuk memastikan konfigurasi bekerja: + +```php + +``` + +## **🔄 Jika Terjadi Masalah:** + +### **Masalah: "API key not set"** +**Solusi:** +1. Pastikan file `.env` ada di root directory +2. Pastikan permission file `.env` dapat dibaca oleh PHP +3. Restart web server jika perlu: `sudo service apache2 restart` + +### **Masalah: "403 Forbidden" dari Gemini API** +**Solusi:** +1. Periksa apakah API key valid di [Google AI Studio](https://makersuite.google.com/app/apikey) +2. Pastikan billing enabled di Google Cloud Console +3. Cek quota usage di Google Cloud Console + +## **📞 Support:** + +Jika menemukan masalah keamanan: +1. **Segera putar API key** di Google AI Studio +2. Update file `.env` di semua environment +3. Hubungi developer: [wartana@example.com] + +--- + +**⚠️ REMINDER:** JANGAN pernah commit file `.env` atau `admin/api/config_api.php` ke repository Git. Selalu gunakan `.env.example` sebagai template. + +**Terakhir diperbarui:** 22 Januari 2026 \ No newline at end of file diff --git a/admin/api/config_api.php b/admin/api/config_api.php deleted file mode 100644 index 28b00c0..0000000 --- a/admin/api/config_api.php +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/admin/scanner_modal.php b/admin/scanner_modal.php index 96e111e..9f4d0bc 100644 --- a/admin/scanner_modal.php +++ b/admin/scanner_modal.php @@ -3,51 +3,33 @@