API Güvenliği ve Protokolleri
Yapay zeka modellerine erişim sağlayan API anahtarları, doğrudan finansal kredilerinizle ilişkilidir. Bu anahtarların çalınması, sadece veri sızıntısına değil, aynı zamanda kontrolsüz maliyetlere de yol açar. Bu bölümde, anahtarlarınızı bir zırh gibi nasıl koruyacağınızı öğreneceğiz.
En Büyük Risk: API anahtarınızı asla bir
.js dosyasının içinde veya HTML kodunda doğrudan kullanmayın. Tarayıcıda "Kaynağı Görüntüle" diyen herkes anahtarınızı çalabilir.
1) .env Dosyası ile Yapılandırma
Hassas verileri kodun kendisinden ayırmak, modern yazılım geliştirmenin temel kuralıdır. .env dosyaları, bu verileri ortam değişkeni olarak saklamanızı sağlar.
OPENAI_API_KEY=sk-proj-abc123xyz...
DB_PASSWORD=super_secret_password
DEBUG=false
Önemli:
.gitignore dosyanıza .env eklemeyi unutmayın! Aksi takdirde anahtarlarınız GitHub/GitLab üzerinde herkese açık hale gelir.
2) Server-Side Proxy (Vekil Sunucu) Mimarisi
Frontend (React, Vue, HTML) doğrudan AI servisine bağlanmak yerine, sizin kendi sunucunuzdaki bir dosyaya (Proxy) istek atar. API anahtarı sunucuda gizli kalır.
| Yöntem | Güvenlik | Neden Kullanılmalı? |
|---|---|---|
| Direct Client Call | Çok Düşük | Sadece yerel testler için. Anahtar sızar. |
| Server-Side Proxy | Çok Yüksek | Anahtar sunucuda gizlidir, limitler kontrol edilebilir. |
3) PHP ile Örnek Proxy Katmanı
Aşağıdaki kod, istemciden gelen isteği alır, kendi gizli anahtarını ekler ve AI servisine iletir:
// Gelen isteği oku
$input = json_decode(file_get_contents('php://input'), true);
// API Anahtarını güvenli bir yerden (.env veya config) al
$apiKey = $_ENV['OPENAI_API_KEY'];
// AI Servisine isteği gönder (cURL)
$ch = curl_init('https://api.openai.com/v1/chat/completions');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $apiKey
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($input));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
echo $response;
4) İleri Seviye Güvenlik Önlemleri
- Rate Limiting: Proxy dosyanıza IP başına limit koyun (Örn: Dakikada 5 istek).
- CORS Ayarları: Proxy'nizin sadece kendi domaininizden gelen isteklere yanıt vermesini sağlayın.
- Input Validation: Kullanıcıdan gelen prompt içeriğini sunucu tarafında filtreleyin (Küfür veya zararlı komut engelleme).
- Key Rotation: API anahtarlarınızı belirli aralıklarla (3-6 ay) güncelleyin.
💡 Profesyonel İpucu: Eğer uygulamanız büyürse, anahtarları doğrudan sunucuda tutmak yerine AWS Secrets Manager veya HashiCorp Vault gibi profesyonel kasa çözümlerini kullanın.