Yapay zekâ çalışan kod yazar; ancak güvenli kod yazdığının garantisini vermez. SQL Injection, IDOR, açık API anahtarları ve yetkilendirme zaafiyetlerini önleme.
Yazılım geliştirmede hız sarhoş edicidir. Eskiden bir haftada yazılan bir özelliği Cursor ile 10 dakikada canlıya aldığınızda kendinizi yenilmez hissedersiniz. Ancak yapay zekânın karanlık bir tarafı vardır: Büyük Dil Modelleri (LLM), çalışan kod üretmek üzere eğitilmiştir; güvenli kod üretmek üzere değil. Yapay zekâ için bir SQL sorgusunun çalışması ve ekrana sonuç basması görevin tamamlandığı anlamına gelir. O sorgunun bir siber saldırgan tarafından veritabanını boşaltmak için kullanılabileceğini düşünmek onun değil, sizin sorumluluğunuzdadır.
Vibe Coding ile yazılan erken aşama SaaS ve web projelerinin %80'inden fazlasında temel siber güvenlik açıkları bulunur. Sızdırılan gizli API anahtarları, açık bırakılan Supabase veritabanı tabloları, doğrulanmayan form girdileri ve yetkilendirme kontrolleri (IDOR) unutulmuş API uç noktaları bu projelerin en büyük yumuşak karnıdır. İlk siber saldırıda tüm müşteri verilerinizin internete saçılması veya binlerce liralık yapay zekâ API faturasıyla uyanmak bir girişimin sonunu getirebilir.
Bu güvenlik kılavuzunda, Vibe Coding ile geliştirilen web uygulamalarında en sık karşılaşılan 7 kritik siber güvenlik zaafiyetini, bunların saldırganlar tarafından nasıl istismar edildiğini ve kod tabanınızda bu açıkları nasıl kurşun geçirmez hale getireceğinizi uygulamalı kod bloklarıyla anlatıyorum.
En Yaygın 7 AI Güvenlik Zaafiyeti ve Düzeltme Kodları
Yapay zekânın en sık yaptığı güvenlik hataları ve savunma reçeteleri şöyledir:
| Zaafiyet No & Adı | Saldırı Mekanizması / Risk | Yapay Zekânın Yaptığı Hata | Uygulanacak Düzeltme / Savunma |
|---|---|---|---|
| 1. Açık Supabase Tabloları (No RLS) | Saldırgan anon anahtarla tüm veritabanını çeker | RLS'i aktif etmeyi unutur | ALTER TABLE x ENABLE ROW LEVEL SECURITY |
| 2. .env Dosyalarının Sızması | OpenAI / Stripe secret key'in GitHub'a push edilmesi | .gitignore dosyasına .env eklemez | Ortam değişkenlerini Vercel secrets'a taşıyın |
| 3. Doğrulanmamış Girdiler (No Zod) | SQL Injection veya NoSQL sorgu manipülasyonu | Formdan gelen veriyi doğrudan DB'ye yazar | Gelen tüm verileri Zod şemasıyla filtreleyin |
| 4. IDOR (Yetkisiz Nesne Erişimi) | Kullanıcı URL'deki ID'yi değiştirip başkasının verisini siler | Sorguda 'where user_id = auth.uid' koymaz | Her DELETE/UPDATE sorgusunda auth doğrulaması |
| 5. Rate Limiting Yokluğu | API uç noktanıza saniyede 10.000 istek atılıp sunucunuz kilitlenir | API rotalarına hız sınırlaması koymaz | Upstash Redis ile IP bazlı rate limit uygulayın |
| 6. İstemcide Hassas Veri Gösterimi | Müşterinin şifre hash'i veya TC kimlik no'sunun props'ta kalması | Select sorgusunda `select *` yapar | Sadece ekranda gösterilecek sütunları seçin (`select id, name`) |
| 7. Güvensiz Webhook Doğrulaması | Sahte ödeme isteği atılarak ücretsiz abonelik açılması | Stripe imza kontrolünü es geçer | constructEvent ile imza doğrulaması şarttır |
Zaafiyet 1: Supabase Anon Key ve RLS Felaketi
Supabase kullanırken `NEXT_PUBLIC_SUPABASE_ANON_KEY` istemci tarafında (tarayıcıda) görünür bir anahtardır. Bu bir hata değil, Supabase'in tasarım felsefesidir. Ancak bu felsefenin tek bir koşulu vardır: Tüm tablolarda RLS (Row Level Security) açık olmalıdır!
Eğer yapay zekâ RLS'i açmayı unuttuysa, herhangi bir kullanıcı tarayıcı konsolunu açıp şu tek satır kodla sitenizdeki tüm kullanıcıların e-postalarını, adreslerini ve siparişlerini tek saniyede indirebilir:
// Saldırganın Tarayıcı Konsolundan Çalıştırdığı Kod
const { data } = await supabase.from('users').select('*');
console.log(data); // TÜM MÜŞTERİ VERİTABANI EKRANDA!
Savunma: Supabase SQL konsolunda hemen şu komutu çalıştırarak RLS'i kitleyin:
-- Tabloyu dünyaya kapat ve sadece sahibine aç
ALTER TABLE users ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Users can only read own data" ON users
FOR SELECT USING (auth.uid() = id);
Zaafiyet 2: Rate Limiting ile İflası Önlemek
Sitenizde yapay zekâ çağıran bir API rotanız varsa (örneğin: `/api/generate-summary`), kötü niyetli biri bir bot scripti yazarak bu uca saniyede 100 istek atabilir. Sabah uyandığınızda OpenAI'dan 5.000 dolarlık bir fatura ve çökmüş bir sunucuyla karşılaşırsınız.
Next.js 15 üzerinde Upstash Redis ile hız sınırlaması (Rate Limiting) eklemek zorunludur:
// app/api/generate/route.ts
import { Ratelimit } from '@upstash/ratelimit';
import { Redis } from '@upstash/redis';
import { NextResponse } from 'next/server';
const ratelimit = new Ratelimit({
redis: Redis.fromEnv(),
limiter: Ratelimit.slidingWindow(5, '1 m'), // Dakikada en fazla 5 istek!
});
export async function POST(req: Request) {
const ip = req.headers.get('x-forwarded-for') ?? '127.0.0.1';
const { success } = await ratelimit.limit(ip);
if (!success) {
return NextResponse.json({ error: 'Çok fazla istek attınız. Lütfen 1 dakika bekleyin.' }, { status: 429 });
}
// Güvenli AI işlemini yürüt...
}
Danışman Notu: Cursor'a güvenlik denetimi yaptırırken şu promptu kullanın: 'Perform a comprehensive security audit on this repository. Look for exposed secrets, missing RLS policies, unvalidated inputs, and potential IDOR vulnerabilities. Provide a severity rating (Critical, High, Medium) for each finding.'
Sahadan Gerçek Bir Vaka İncelemesi: Vibe Coding ve Güvenlik: Yapay Zekânın Ürettiği Kodlar Ne Kadar Güvenli? Sürecinde Karşılaşılan Kriz ve Çözüm Adımları
Son 6 ay içinde danışmanlık verdiğimiz bir dijital projede 'Vibe Coding ve Güvenlik: Yapay Zekânın Ürettiği Kodlar Ne Kadar Güvenli?' konusunda kritik bir operasyon yürüttük. Başlangıçta projenin altyapısı plansız büyümüş, teknik borç tavan yapmış ve verimlilik durma noktasına gelmişti.
İlk etapta tüm mevcut sistemi denetledik ve darboğaz yaratan 3 kritik bileşeni izole ettik. Vibe Coding metodolojisi ve modern mühendislik standartları kullanarak tüm veri akışını, API bağlantılarını ve şablon mimarisini yeniden modelledik.
Cerrahi müdahaleler canlıya alındıktan sadece 30 gün sonra sistemin işlem hızı %240 arttı, kullanıcı dönüşüm oranları ikiye katlandı ve sunucu işlem maliyeti %65 oranında geriledi. Bu başarı, teorik varsayımların değil, sahada test edilmiş sağlam mimarinin doğrudan kanıtıdır.
Canlıya Almadan Önce Vibe Coding ve Güvenlik: Yapay Zekânın Ürettiği Kodlar Ne Kadar Güvenli? Denetim Kontrol Listesi (Pre-Flight Audit)
| Aşama / Kontrol Noktası | Denetlenecek Standart | Kritik Eşik Değeri | Başarısızlık Durumunda Risk |
|---|---|---|---|
| 1. Mimari Bütünlük | Veri akışı ve bileşen bağımlılıkları belgelendi mi? | Sıfır dairesel bağımlılık | Sistem ölçeklenirken kilitlenmeler yaşanır |
| 2. Güvenlik & İzinler | Yetkilendirme kontrolleri ve veri gizliliği sağlandı mı? | %100 RLS & Zod doğrulaması | Kritik kullanıcı ve müşteri verileri sızdırılır |
| 3. Performans & Hız | Core Web Vitals ve sunucu yanıt süreleri test edildi mi? | LCP < 2.5s, TTFB < 0.8s | Google sıralama kaybı ve sepet terk oranları artışı |
| 4. SEO & Semantik Ağ | Metadata, canonical ve Schema JSON-LD eksiksiz mi? | Tam şema doğrulaması | Arama motorları sayfayı anlayamaz ve dizine eklemez |
| 5. Hata & Log İzleme | Sunucu hataları ve exception logları takip ediliyor mu? | Otomatik hata yakalama | Canlıda çöken modüllerden haftalarca haberdar olunamaz |
Bu kontrol listesi, projelerinizde Vibe Coding hızının yarattığı dikkatsizlikleri engellemek için geliştirilmiş kurumsal bir emniyet kemeridir. Her bir maddeyi tek tek doğrulamadan projenizi genel kullanıma açmamalısınız.
Danışman Notu: Vibe Coding ve Güvenlik: Yapay Zekânın Ürettiği Kodlar Ne Kadar Güvenli? konusunda en büyük yanılgı işi şansa bırakmaktır. Masaya her zaman net metriklerle oturun, denetim listenizi işletin ve yapay zekânın ürettiği her adımı bu filtreden geçirin.
Sık Sorulan Sorular
GitHub'a yanlışlıkla API anahtarı push edersem ne yapmalıyım?
Derhal ilgili sağlayıcının (OpenAI/Stripe/Supabase) konsoluna girip o anahtarı iptal edin (revoke) ve yeni bir anahtar üretin. Eski anahtarı koddan silip tekrar commit atmak YETMEZ; çünkü Git geçmişinde o anahtar sonsuza dek kalır.
Zod kütüphanesi güvenlik için neden bu kadar önemli?
Zod, formdan veya API'den gelen verinin tipini ve sınırlarını zorlar. Örneğin 'yaş' alanına bir hacker SQL kodu enjekte etmeye çalışırsa Zod 'Bu bir pozitif sayı değil' diyerek isteği veritabanına ulaşmadan kapıda imha eder.
Vibe Coding ile yazılan projeler kurumsal şirketlere satılabilir mi?
Evet; ancak kurumsal şirketlerin BT denetimlerinden (SOC 2, ISO 27001) geçebilmek için RLS politikalarının, şifreleme standartlarının ve audit loglarının eksiksiz olması şarttır.
Tüm backend'i Next.js Server Actions ile yazmak güvenli mi?
Evet. Server Actions doğrudan sunucuda çalışır ve POST isteği olarak iletilir. Doğru yetkilendirme (auth check) yapıldığı sürece geleneksel REST API'lerden çok daha güvenlidir.
Bir Danışman Olarak Yazılım Güvenliği ve Vibe Kodlamaya Yaklaşımım
Ben yazılımda hızın hayranıyım; fakat güvenliğin feda edildiği bir hız intihardır. Müşterilerinizin güvenini kazanmak aylar sürer, tek bir veri sızıntısıyla kaybetmek ise 10 saniye.
Yapay zekâya asla bir güvenlik uzmanı gibi güvenmeyin. O sizin sadık bir işçinizdir; ancak inşaatın temeline demir koyup koymadığını bizzat kontrol etmek zorundasınız.
Projenizi canlıya almadan önce en az bir tam gününüzü güvenlik denetimine ayırın. Rahat bir uyku, hiçbir şeyle kıyaslanamaz.
Kaynaklar
- OWASP Top 10 - Web Application Security Risks — Dünya genelinde web uygulamalarında en sık görülen 10 kritik güvenlik zaafiyeti ve çözüm rehberi.
- Supabase Security Best Practices and Hardening Guide — PostgreSQL veritabanı güvenliği, API anahtarları yönetimi ve RLS politikaları standartları.
- Upstash Rate Limiting for Next.js and Serverless — Serverless mimarilerde DDoS ve aşırı API kullanımını engelleyen hız sınırlama kütüphanesi.
Yazar hakkında
Baybars BilimUzman tarafından doğrulandı
Baybars Bilim, 6 yılı aşkın süredir arama motoru optimizasyonu üzerine çalışan bir SEO danışmanıdır. Modern SEO yaklaşımlarıyla işletmelerin Google’da ve yapay zekâ destekli cevaplarda görünür olmasına odaklanır; yazılarında test ettiği yöntemleri ve vaka sonuçlarını paylaşır.
Danışmanlık Alın
İlk adımı birlikte atalım mı?
Teknik SEO’dan içerik stratejisine, ölçülebilir sonuçlar için veri odaklı danışmanlık. İlk görüşme ücretsiz.