Yapay Zeka ile Yazılan Kodlar Güvenli mi? Güvenlik Riskleri ve Kontrol Listesi
12 Ekim 2026
Yapay zeka ile yazılım geliştirmek artık yalnızca deneyimli yazılımcıların kullandığı bir yöntem değil. ChatGPT, Claude, GitHub Copilot ve Cursor gibi araçlar sayesinde girişimciler, öğrenciler ve küçük ekipler daha önce haftalar sürebilecek web uygulamalarını çok daha kısa sürede geliştirebiliyor.
Ancak geliştirme hızının artması beraberinde önemli bir soruyu getiriyor:
Yapay zeka ile yazılan kod güvenli mi?
Kısa cevap: Yapay zeka tarafından üretilen kodun çalışıyor olması, güvenli olduğu anlamına gelmez. Bir uygulamanın doğru çalışması; authentication, authorization, veri doğrulama, API güvenliği ve sunucu yapılandırmasının doğru olduğu anlamına gelmez.
Bu nedenle yapay zeka ile geliştirilen bir web uygulaması production ortamına alınmadan önce ayrıca güvenlik açısından değerlendirilmelidir.
1. Çalışan Kod, Güvenli Kod Değildir
Büyük dil modelleri (LLM), verilen gereksinimlere uygun kod üretme konusunda oldukça başarılıdır. Ancak bir LLM’nin oluşturduğu kodun güvenli olması yalnızca kodun hatasız çalışmasına bağlı değildir.
Güvenli bir web uygulaması; doğru kimlik doğrulama, yetkilendirme, girdi doğrulama, güvenli hata yönetimi, güvenli yapılandırma ve uygun erişim kontrollerinin birlikte uygulanmasını gerektirir.
Örneğin yapay zekadan kullanıcı profillerini döndüren bir API oluşturmasını istediğinizi düşünün:
GET /api/users/{id}
Endpoint teknik olarak doğru çalışabilir. Ancak sunucu, isteği yapan kullanıcının gönderilen id değerine ait veriyi görme yetkisini kontrol etmiyorsa bir IDOR (Insecure Direct Object Reference) açığı ortaya çıkabilir.
Bir kullanıcı:
/api/users/100
yerine:
/api/users/101
göndererek başka bir kullanıcının bilgilerine erişebiliyorsa, uygulama işlevsel olarak çalışmasına rağmen güvenlik açısından ciddi bir problem içeriyor demektir.
Bu nedenle yapay zekanın ürettiği kod değerlendirilirken yalnızca "çalışıyor mu?" sorusu değil, "yetkisiz bir kullanıcı bunu kötüye kullanabilir mi?" sorusu da sorulmalıdır.
2. Yapay Zeka ile Geliştirilen Projelerde Hangi Güvenlik Açıkları Kontrol Edilmeli?
AI tarafından oluşturulan bir uygulamanın güvenliği yalnızca kaynak koduna bakılarak değerlendirilemez. Uygulamanın gerçek davranışı ve dışarıdan erişilebilen yüzeyi de incelenmelidir.
Özellikle aşağıdaki güvenlik alanları kontrol edilmelidir.
Authentication ve Kimlik Doğrulama
Kullanıcıların gerçekten kim olduklarının doğru şekilde doğrulanması gerekir.
Login sistemi, session yönetimi, JWT kullanımı, şifre sıfırlama, oturum sonlandırma ve brute-force korumaları bu kapsamda değerlendirilebilir.
Bir uygulamada login ekranının bulunması, authentication mekanizmasının güvenli olduğu anlamına gelmez.
Authorization ve IDOR
Authentication kullanıcının kim olduğunu belirlerken authorization kullanıcının hangi işlemleri yapabileceğini belirler.
Örneğin normal bir kullanıcının yönetici endpoint'lerine erişememesi gerekir.
Aynı şekilde kullanıcıların URL veya API parametrelerindeki ID değerlerini değiştirerek başka kullanıcılara ait verilere erişememesi gerekir.
Bu nedenle özellikle AI tarafından oluşturulan API'lerde sunucu tarafındaki yetkilendirme kontrolleri dikkatle incelenmelidir.
SQL Injection ve Injection Açıkları
Kullanıcı tarafından kontrol edilen verilerin güvenli şekilde işlenmemesi SQL Injection gibi ciddi güvenlik açıklarına yol açabilir.
Parametreli sorgular, uygun ORM kullanımı ve doğru input validation yöntemleri bu riskin azaltılmasına yardımcı olur.
Bunun yanında uygulamanın işletim sistemi komutları, template motorları veya diğer yorumlayıcılarla kullanıcı girdisini nasıl işlediği de değerlendirilmelidir.
Cross-Site Scripting (XSS)
Kullanıcı tarafından gönderilen verilerin güvenli şekilde işlenmeden HTML veya JavaScript içerisine aktarılması XSS açığı oluşturabilir.
Özellikle kullanıcı yorumları, profil bilgileri, mesajlaşma sistemleri ve yönetim panellerinde kullanıcı girdilerinin nasıl görüntülendiği kontrol edilmelidir.
SSRF
Sunucunun kullanıcı tarafından belirlenen URL'lere istek göndermesine izin veren özellikler SSRF açısından incelenmelidir.
Örneğin bir uygulama dışarıdan URL kabul ediyor ve sunucu bu URL'ye istek gönderiyorsa, saldırganın dahili sistemlere veya beklenmeyen kaynaklara erişip erişemeyeceği değerlendirilmelidir.
Güvensiz Dosya Yükleme
Profil fotoğrafı, belge veya başka dosyaları kabul eden uygulamalarda yalnızca dosya uzantısına güvenmek yeterli değildir.
Dosya türü, dosya boyutu, içerik doğrulaması, depolama konumu ve erişim izinleri birlikte değerlendirilmelidir.
CORS Yanlış Yapılandırmaları
CORS (Cross-Origin Resource Sharing), tarayıcıların farklı origin'lerden çalışan web uygulamalarının belirli kaynakları okumasına izin vermesini kontrol eder.
Özellikle authentication kullanılan API'lerde origin değerinin kontrol edilmeden yansıtılması ve credentials kullanımının gereksiz şekilde açılması güvenlik riski oluşturabilir.
İzin verilen origin'ler sabit bir allowlist üzerinden kontrol edilmeli ve gereksiz credential erişimlerinden kaçınılmalıdır.
Security Headers
HTTP güvenlik başlıkları da web uygulamasının güvenlik seviyesinde önemli bir rol oynar.
Örneğin:
Content-Security-Policy
Strict-Transport-Security
X-Content-Type-Options
X-Frame-Options
Referrer-Policy
gibi başlıkların uygun şekilde yapılandırılması bazı tarayıcı tabanlı saldırılara karşı ek savunma katmanları sağlayabilir.
3. Yapay Zeka Halüsinasyonları Güvenlik Riski Oluşturabilir mi?
Evet, dolaylı olarak oluşturabilir.
Yapay zeka modelleri bazen var olmayan bir kütüphaneyi, yanlış bir API kullanımını veya güncelliğini kaybetmiş bir çözümü önerebilir.
Örneğin geliştirici bir AI aracından belirli bir işlem için gerekli npm paketini eklemesini istediğinde, önerilen paketin gerçekten mevcut olup olmadığı ve güvenilir bir kaynaktan gelip gelmediği kontrol edilmeden paketin projeye dahil edilmesi risk oluşturabilir.
Bu durum özellikle software supply chain güvenliği açısından önemlidir.
Saldırganlar popüler paket isimlerine benzeyen sahte paketler yayınlayarak geliştiricilerin yanlış paketi yüklemesini hedefleyebilir. Bu tekniklerden biri typosquatting olarak bilinir.
Burada önemli ayrım şudur:
Yapay zekanın bir paket önermesi paketin zararlı olduğu anlamına gelmez. Risk, önerilen bağımlılığın doğrulanmadan projeye dahil edilmesiyle ortaya çıkabilir.
Bu nedenle AI tarafından önerilen bağımlılıklar kullanılmadan önce paket adı, geliştiricisi, repository'si, sürümü ve bilinen güvenlik açıkları kontrol edilmelidir.
4. API Anahtarları ve Gizli Bilgiler Açıkta Kalabilir
Yapay zeka ile geliştirilen projelerde dikkat edilmesi gereken konulardan biri de secret yönetimidir.
Kod içerisinde aşağıdaki bilgilerin yanlışlıkla bulunması ciddi sonuçlara yol açabilir:
API anahtarları
Veritabanı şifreleri
Private token'lar
Cloud servis credentials'ları
Secret environment variable'lar
Private key'ler
Özellikle frontend uygulamalarında önemli bir ayrım vardır:
Tarayıcıya gönderilen bir bilgi gerçek anlamda secret değildir.
Bir API anahtarı JavaScript bundle'ına dahil ediliyorsa veya frontend tarafından kullanıcıya gönderiliyorsa, kullanıcı geliştirici araçlarını kullanarak bu değeri inceleyebilir.
Bu nedenle hassas kimlik bilgileri mümkün olduğunca sunucu tarafında tutulmalı ve yalnızca gerçekten public olması gereken değerler istemciye gönderilmelidir.
5. Vibe Coding Döneminde Güvenlik Neden Daha Önemli?
"Vibe coding" olarak adlandırılan AI destekli geliştirme yaklaşımı, özellikle küçük ekiplerin ve teknik olmayan kurucuların hızlı şekilde ürün oluşturmasını kolaylaştırıyor.
Ancak yüksek geliştirme hızı güvenlik kontrollerinin de aynı hızda yapılacağı anlamına gelmiyor.
Bir geliştirici aynı gün içerisinde çok sayıda endpoint, veritabanı tablosu, kullanıcı akışı veya üçüncü taraf entegrasyonu oluşturabilir.
Bu değişikliklerin tamamını manuel olarak güvenlik açısından incelemek her zaman mümkün olmayabilir.
Bu nedenle AI destekli geliştirme süreçlerinde otomatik güvenlik kontrollerinin kullanılması önemli bir ikinci kontrol katmanı oluşturur.
6. Yapay Zeka ile Yazılan Kod Nasıl Güvenli Hale Getirilir?
AI tarafından oluşturulan kodun güvenliği tek bir araçla sağlanamaz. Daha güvenli bir yaklaşım, geliştirme sürecine birden fazla güvenlik katmanı eklemektir.
Kaynak kodunu inceleyin
Özellikle authentication, authorization, ödeme işlemleri, dosya yükleme, API endpoint'leri ve kullanıcı girdilerinin işlendiği bölümler manuel olarak incelenmelidir.
Bağımlılıkları kontrol edin
Projede kullanılan npm, pip, Composer veya diğer paketlerin güncel olup olmadığı ve bilinen güvenlik açıkları içerip içermediği kontrol edilmelidir.
Secret scanning uygulayın
Kaynak kodunda API key, token, private key veya veritabanı bilgileri gibi hassas verilerin bulunmadığından emin olun.
SAST kullanın
Static Application Security Testing (SAST), kaynak kodunu çalıştırmadan belirli güvenlik problemlerini tespit etmeye yardımcı olabilir.
Çalışan uygulamayı dışarıdan test edin
Kod incelemesine ek olarak çalışan uygulamanın internete açık yüzeyi de değerlendirilmelidir.
Açık endpoint'ler, HTTP security headers, TLS yapılandırması, erişilebilir servisler ve otomatik olarak tespit edilebilen yaygın web güvenlik açıkları bu kapsamda incelenebilir.
Gerektiğinde manuel pentest yaptırın
Otomatik güvenlik taraması önemli bir güvenlik katmanı sağlar ancak her güvenlik problemini tespit edemez.
Özellikle ödeme, finans, sağlık, kişisel veri veya kritik iş süreçleri içeren uygulamalarda otomatik kontrollere ek olarak uzmanlar tarafından gerçekleştirilen manuel penetrasyon testi değerlendirilebilir.
7. Production Öncesi AI Kod Güvenliği Kontrol Listesi
Yapay zeka ile geliştirilen bir web uygulamasını canlıya almadan önce aşağıdaki temel kontroller yapılabilir:
Authentication güvenli şekilde uygulanıyor mu?
Authorization kontrolleri sunucu tarafında yapılıyor mu?
IDOR riski kontrol edildi mi?
SQL Injection ve diğer injection türleri test edildi mi?
XSS kontrolleri yapıldı mı?
SSRF riski bulunan özellikler incelendi mi?
Dosya yükleme mekanizması güvenli mi?
CORS yapılandırması doğru mu?
Security Headers kontrol edildi mi?
HTTPS ve TLS yapılandırması uygun mu?
API endpoint'leri dışarıdan incelendi mi?
Gerekli noktalarda rate limiting uygulanıyor mu?
Debug ve test endpoint'leri production'da açık mı?
API key ve secret bilgileri istemci tarafında bulunuyor mu?
Kullanılan bağımlılıkların güvenlik durumu kontrol edildi mi?
Gereksiz servisler internete açık mı?
Uygulama dışarıdan güvenlik taramasından geçirildi mi?
8. Otomatik Güvenlik Taraması Neden Önemli?
Yapay zeka ile geliştirme hızlandıkça uygulamalarda yapılan değişikliklerin sayısı da artabilir.
Yeni bir özellik, yeni bir API endpoint'i veya yeni bir üçüncü taraf entegrasyonu uygulamanın saldırı yüzeyini değiştirebilir.
Otomatik güvenlik taraması, çalışan uygulamayı dışarıdan değerlendirerek geliştiricinin gözden kaçırabileceği bazı güvenlik problemlerinin daha erken fark edilmesine yardımcı olabilir.
Bir dış yüzey veya web güvenlik taraması, kapsamına bağlı olarak:
Açık portları ve servisleri
HTTP güvenlik başlıklarını
TLS yapılandırmasını
Erişilebilir endpoint'leri
Yaygın web güvenlik açıklarını
Güvenlik yanlış yapılandırmalarını
inceleyebilir.
Böylece uygulama canlıya alındıktan sonra saldırganların keşfetmesini beklemek yerine, dışarıdan görülebilen güvenlik problemleri daha erken tespit edilebilir.
9. Otomatik Güvenlik Taraması Pentest Yerine Geçer mi?
Hayır.
Otomatik güvenlik taraması ile penetrasyon testi aynı süreç değildir.
Otomatik taramalar, bilinen veya otomatik olarak tespit edilebilen güvenlik problemlerini hızlı şekilde belirlemek için kullanılabilir.
Penetrasyon testi ise uzmanların uygulamanın davranışını, iş mantığını ve güvenlik kontrollerini daha kapsamlı şekilde incelemesini içerir.
Özellikle iş mantığı açıkları ve uygulamaya özgü karmaşık yetkilendirme problemleri yalnızca otomatik araçlarla her zaman tespit edilemeyebilir.
Bu nedenle güvenlik yaklaşımı uygulamanın risk seviyesine göre belirlenmelidir.
Basit bir web uygulamasında otomatik güvenlik kontrolleri önemli bir başlangıç noktası olabilirken, kritik veriler veya finansal işlemler içeren sistemlerde daha kapsamlı güvenlik testleri gerekebilir.
10. Yapay Zeka ile Geliştirilen Web Uygulamaları Nasıl Test Edilmeli?
Yapay zeka ile geliştirilen bir web uygulamasını test etmek için tek bir yöntem yeterli değildir.
Risk seviyesine ve uygulamanın özelliklerine göre farklı güvenlik kontrollerinin birlikte kullanılması daha sağlıklı bir yaklaşım sağlar:
Kod güvenliği: SAST ve manuel kod incelemesi
Bağımlılık güvenliği: SCA ve dependency kontrolleri
Secret güvenliği: Secret scanning
Çalışan uygulama: DAST ve otomatik web güvenlik taraması
Dış saldırı yüzeyi: Açık servisler, endpoint'ler ve yapılandırmalar
Uzman testi: Gerektiğinde manuel penetrasyon testi
Bu yaklaşım yalnızca yapay zekanın ürettiği kodu değil, internete açılan gerçek uygulamanın tamamını değerlendirmeyi amaçlar.
Sık Sorulan Sorular
Yapay zeka ile yazılan kod güvenli midir?
Yapay zeka tarafından üretilmiş olması kodun güvenli olduğunu garanti etmez. AI ile oluşturulan kod production'a alınmadan önce kod incelemesi, bağımlılık kontrolleri ve uygun güvenlik testlerinden geçirilmelidir.
ChatGPT ile yazılan kodlarda güvenlik açığı olabilir mi?
Evet. ChatGPT veya başka bir yapay zeka aracının ürettiği kodda authentication, authorization, input validation, XSS, injection, secret yönetimi veya başka güvenlik problemleri bulunabilir.
Cursor ile geliştirilen uygulamalar güvenli midir?
Cursor gibi AI destekli geliştirme araçları yazılım üretim hızını artırabilir ancak oluşturulan kodun güvenli olduğunu garanti etmez. Güvenlik, kullanılan geliştirme aracından bağımsız olarak ayrıca doğrulanmalıdır.
Yapay zeka ile oluşturulan web sitesi nasıl test edilir?
Web sitesi authentication, authorization, injection, XSS, SSRF, dosya yükleme, CORS, security headers, API güvenliği, TLS ve dış saldırı yüzeyi gibi alanlarda test edilebilir. Uygulamanın risk seviyesine göre otomatik güvenlik taraması ve manuel penetrasyon testi birlikte kullanılabilir.
AI ile geliştirilen projelerde pentest gerekli mi?
Uygulamanın risk seviyesine bağlıdır. Kullanıcı verileri, ödeme sistemleri veya kritik iş süreçleri içeren uygulamalarda otomatik güvenlik kontrollerine ek olarak uzmanlar tarafından gerçekleştirilen penetrasyon testi özellikle değerlendirilebilir.
Yapay zeka kod güvenlik açıklarını tamamen önleyebilir mi?
Hayır. Yapay zeka güvenlik kontrollerinin uygulanmasına yardımcı olabilir ancak hiçbir AI aracı bir uygulamanın tamamen güvenli olduğunu garanti etmez. Güvenlik testleri, kod incelemesi ve uygun geliştirme süreçleri birlikte kullanılmalıdır.
Sonuç
Yapay zeka yazılım geliştirme sürecini önemli ölçüde hızlandırıyor. Ancak geliştirme hızının artması, güvenlik kontrollerinin atlanabileceği anlamına gelmiyor.
Çalışan kod güvenli kod değildir.
ChatGPT, Claude, GitHub Copilot veya Cursor tarafından oluşturulan kod production ortamına alınmadan önce authentication, authorization, injection, XSS, SSRF, CORS, dosya yükleme, security headers, secret yönetimi ve bağımlılık güvenliği gibi alanlarda kontrol edilmelidir.
Özellikle internete açık web uygulamalarında yalnızca kaynak kodunu incelemek yeterli değildir. Uygulamanın dışarıdan görünen saldırı yüzeyi ve çalışan servisleri de değerlendirilmelidir.
Yapay zeka ile geliştirme sürecini yavaşlatmadan güvenliği artırmanın yollarından biri, otomatik güvenlik kontrollerini geliştirme ve deployment süreçlerine dahil etmektir.
Uygulamanızı canlıya almadan önce dışarıdan nasıl göründüğünü ve hangi güvenlik problemlerinin tespit edilebildiğini kontrol etmek istiyorsanız, CyberTestify ile web uygulamanız için güvenlik ön değerlendirmesi gerçekleştirebilirsiniz.