Files
sidak/README_API_SECURITY.md

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