115 lines
3.3 KiB
Markdown
115 lines
3.3 KiB
Markdown
# 🔐 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
|
|
<?php
|
|
// Test script: test_api_config.php
|
|
require_once 'admin/api/config_api.php';
|
|
|
|
echo "GEMINI_API_KEY: " . (defined('GEMINI_API_KEY') ? '✅ Set' : '❌ Not set') . "\n";
|
|
echo "GEMINI_API_URL: " . GEMINI_API_URL . "\n";
|
|
|
|
if (empty(GEMINI_API_KEY)) {
|
|
echo "❌ ERROR: API key tidak terdeteksi.\n";
|
|
echo "Pastikan file .env ada dan berisi GEMINI_API_KEY=your_key\n";
|
|
} else {
|
|
echo "✅ Konfigurasi API siap digunakan.\n";
|
|
}
|
|
?>
|
|
```
|
|
|
|
## **🔄 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 |