Yazılım

En Yaygın Web Güvenlik Açıkları (OWASP Top 10) ve Alınması Gereken Önlemler

Talha AslanTalha Aslan 14 dk okuma

OWASP Top 10 nedir ve web sitenizi hangi açıklara karşı korur?

OWASP Top 10, web uygulamalarında en kritik on güvenlik riski kategorisini sıralayan, açık kaynaklı ve ücretsiz bir farkındalık belgesidir. Kâr amacı gütmeyen OWASP vakfı listeyi gerçek test verisi ve topluluk anketiyle hazırlar. Yani bir standart değil, önceliklendirme rehberidir; ekibinize nereden başlayacağınızı gösterir.

Ben 2012'den beri kurumsal siteler ve e-ticaret projeleriyle çalışıyorum. Bu sürede gördüğüm hacklenen sitelerin neredeyse hiçbiri egzotik bir saldırıyla düşmedi. Çoğu zaman basit bir yetki kontrolü eksikti, bir eklenti güncellenmemişti ya da yönetim paneli varsayılan şifreyle açıktı. Bu yüzden OWASP Top 10 listesini her projede bir kontrol çerçevesi olarak kullanıyorum.

Bu yazıda güncel listenin on kategorisini tek tek ele alıyorum. Her kategori için ne anlama geldiğini, sahada nasıl göründüğünü ve hangi önlemi alabileceğinizi anlatıyorum. Kaynak olarak doğrudan OWASP Top 10:2025 resmi sayfası sayfasını kullandım; kategori adları ve sıralaması oradan geliyor.

Bu yazı bir güvenlik testi rehberi değil. Amacım, siteniz için karar veren kişinin kategorileri anlaması ve geliştirici ekibine doğru soruları sorabilmesi. Kod örneklerine girmiyorum; bunun yerine her başlıkta kontrol edebileceğiniz somut maddeler bırakıyorum.

OWASP Top 10 listesi güncel sürümde nasıl değişti?

Güncel sürüm OWASP Top 10:2025 adını taşıyor. Önceki 2021 sürümüne göre en dikkat çekici değişiklik, yazılım tedarik zinciri hatalarının ayrı bir kategori olarak üçüncü sıraya yerleşmesi. Ayrıca istisnai durumların yanlış ele alınması, onuncu sırada yeni bir kategori olarak listeye girdi.

Öte yandan bazı başlıklar birleşti. Örneğin sunucu taraflı istek sahteciliği (SSRF) artık ayrı bir kategori değil; erişim kontrolü başlığının altında değerlendiriliyor. Güvenlik yapılandırma hataları ise beşinci sıradan ikinci sıraya çıktı. Kısacası liste, modern sitelerin gerçekte nasıl kırıldığını daha iyi yansıtıyor.

  • A01: Bozuk erişim kontrolü (Broken Access Control).
  • A02: Güvenlik yapılandırma hataları.
  • A03: Yazılım tedarik zinciri hataları.
  • A04: Kriptografik hatalar.
  • A05: Enjeksiyon.
  • A06: Güvensiz tasarım.
  • A07: Kimlik doğrulama hataları.
  • A08: Yazılım veya veri bütünlüğü hataları.
  • A09: Güvenlik loglama ve uyarı hataları.
  • A10: İstisnai durumların yanlış ele alınması.

Bu sıralamayı bir puan tablosu gibi okumayın. Onuncu sıradaki bir açık da sizin sitenizde en büyük risk olabilir. Dolayısıyla listeyi, kendi uygulamanıza uyarladığınız bir kontrol haritası olarak kullanmanızı öneririm.

Bir not daha: eski sürüme göre hazırlanmış denetim raporlarınız varsa kategori kodları artık farklı. Örneğin eski A05 yapılandırma başlığı bugün A02 olarak geçiyor. Bu yüzden raporları karşılaştırırken kodlara değil kategori adlarına bakın.

A01 bozuk erişim kontrolü nedir, nasıl önlersiniz?

Bozuk erişim kontrolü, bir kullanıcının yetkisi olmayan veriye veya işleme ulaşabilmesidir. En klasik örnek şu: adres çubuğundaki sipariş numarasını değiştiriyorsunuz ve başka bir müşterinin faturasını görüyorsunuz. Buna IDOR, yani güvensiz doğrudan nesne referansı diyoruz.

Sahada en sık gördüğüm hata, yetki kontrolünün yalnız arayüzde kalması. Örneğin yönetici butonu normal kullanıcıya gizleniyor ama arkadaki API adresi herkese açık kalıyor. Saldırgan butonu görmese de isteği elle gönderebilir. Bu yüzden her kontrolü sunucu tarafında, her istekte yeniden yapmanız gerekir.

  • Varsayılan kuralı "reddet" olarak kurun; izni açıkça verin.
  • Her kayıt sorgusunda kaydın o kullanıcıya ait olup olmadığını kontrol edin.
  • Sıralı kimlikler yerine tahmin edilemeyen kimlikler kullanın, ama bunu tek önlem saymayın.
  • Yönetim panelini ayrı bir yol, IP kısıtı veya ek doğrulamayla koruyun.
  • Sunucunun dışarıya yaptığı istekleri izinli adres listesiyle sınırlayın; SSRF de artık bu başlıkta.

Ayrıca rol değişikliklerini test senaryolarınıza ekleyin. Bir kullanıcı rolü düşürüldüğünde eski oturumu hâlâ yönetici yetkisi taşıyorsa, sorun kodda değil oturum yönetimindedir.

Pratikte bu kontrolü tek bir ortak katmanda toplamanız işinizi kolaylaştırır. Her sayfada ayrı ayrı yetki kodu yazdığınızda, bir gün biri mutlaka unutulur. Merkezi bir kontrol ise yeni eklenen her adresi otomatik olarak kapsar.

A02 güvenlik yapılandırma hataları neden bu kadar yaygın?

Güvenlik yapılandırma hataları, yazılım doğru olsa bile sunucu, çatı veya bulut ayarlarının güvensiz bırakılmasıdır. Açık kalan hata ayrıntıları, varsayılan hesaplar, dizin listeleme ve gereksiz servisler bu kategoriye girer. Liste güncel sürümde bu başlığı ikinci sıraya taşıdı.

Yaygın olmasının nedeni basit: yapılandırma kodun dışında yaşar ve kimse sahiplenmez. Geliştirici "sunucu hosting firmasının işi" der, hosting firması "uygulama sizin" der. Arada kalan bir yedek dosyası web dizininde herkese açık durur. Ben kendi projelerimde en az bir kez docroot içinde unutulmuş bir yedek dosyası yakaladım.

  • Üretimde hata ayrıntılarını kapatın; kullanıcıya genel bir mesaj gösterin.
  • Dizin listelemeyi kapatın ve yedek, .env, .git gibi dosyaları web kökünden çıkarın.
  • Güvenlik başlıklarını (Content-Security-Policy, HSTS, X-Content-Type-Options) ekleyin.
  • Kullanmadığınız servisleri, portları ve örnek sayfaları kaldırın.
  • Ortam ayarlarını tekrarlanabilir bir şablonla kurun, elle kurulum yapmayın.

Öte yandan yönlendirme zincirleri de sessiz bir yapılandırma sorunudur. HTTP adresinin doğrudan HTTPS'e gidip gitmediğini yönlendirme denetleyici ile birkaç saniyede kontrol edebilirsiniz.

Ayrıca bulut depolama ayarlarına özellikle dikkat edin. Herkese açık bırakılmış bir depolama alanı, fatura ve kimlik belgelerini dakikalar içinde internete açabilir. Bu tür ayarları her ay kısa bir kontrol listesiyle gözden geçirmenizi öneririm.

A03 yazılım tedarik zinciri hataları sitenizi nasıl etkiler?

Yazılım tedarik zinciri hataları, sizin yazmadığınız ama sitenizde çalışan kodun risk taşımasıdır. Kütüphaneler, eklentiler, temalar, paket yöneticisi bağımlılıkları ve derleme araçları bu zincirin halkalarıdır. Eski sürümdeki "güncel olmayan bileşenler" kategorisi, güncel sürümde bu daha geniş başlığa dönüştü.

Örneğin bir WordPress sitesinde otuz eklenti çalışıyor olabilir. Her biri ayrı bir geliştiriciye aittir ve her biri ayrı bir güncelleme takvimi izler. Birinin terk edilmesi, sizin sitenizin kapısını açık bırakır. Üstelik ele geçirilmiş bir paket, güncelleme yoluyla doğrudan sunucunuza iner.

  • Kullandığınız tüm bileşenlerin sürüm listesini tutun; buna yazılım malzeme listesi (SBOM) denir.
  • Bağımlılık tarayıcılarını derleme sürecine ekleyin ve kritik bulguda derlemeyi durdurun.
  • Kilit dosyalarını (package-lock, composer.lock) depoya koyun ve sürümleri sabitleyin.
  • Uzun süredir güncellenmeyen eklenti ve paketleri alternatifleriyle değiştirin.

Kısacası "çalışıyorsa dokunma" yaklaşımı güvenlikte işe yaramaz. Düzenli bakım aynı zamanda SEO açısından da fayda sağlar; bu konuyu web sitesini güncel tutmak yazımda ayrıca anlattım.

Bir de şunu hesaba katın: güncelleme yapmak her zaman risksiz değildir. Bu yüzden önce test ortamında deneyin, ardından canlıya alın. Böylece hem güvenlik açığını kapatır hem de siteyi bozma ihtimalini düşürürsünüz.

A04 kriptografik hatalar hangi verileri açığa çıkarır?

Kriptografik hatalar, hassas verinin şifrelenmemesi veya zayıf yöntemlerle şifrelenmesidir. Şifreler, kart bilgileri, kimlik numaraları ve sağlık verileri en çok risk taşıyan verilerdir. Sorun çoğu zaman şifrelemenin hiç olmaması değil, yanlış yerde veya eski algoritmayla yapılmasıdır.

En sık gördüğüm örnek, şifrelerin MD5 veya SHA1 ile tuzsuz saklanması. Bu algoritmalar hızlıdır; ancak şifre saklamada hız bir dezavantajdır. Çünkü saldırgan sızdırdığı veritabanında saniyede milyarlarca deneme yapabilir. Bunun yerine bcrypt, scrypt veya Argon2 gibi bilerek yavaş tasarlanmış yöntemler kullanmalısınız.

  • Tüm trafiği TLS ile taşıyın ve HSTS başlığını açın.
  • Şifreleri yalnız Argon2, bcrypt veya scrypt ile saklayın.
  • Anahtarları kodun içine yazmayın; bir gizli bilgi kasasında tutun.
  • İhtiyacınız olmayan hassas veriyi hiç saklamayın; saklamadığınız veri sızmaz.

Kullanıcılarınıza güçlü şifre önermek de işin bir parçasıdır. Örneğin ekibinizin panel şifrelerini şifre oluşturucu ile üretmesini isteyebilirsiniz. Ayrıca kurumsal e-postada SPF, DKIM ve DMARC ayarlarını kurumsal e-posta altyapısı yazısında anlattım.

Saklama süresi de bir kriptografi konusudur. Eski müşteri kayıtlarını yıllarca tutmak, sızıntı anında etkilenen kişi sayısını büyütür. KVKK açısından da gereksiz veri saklamak ayrı bir risk yaratır; dolayısıyla silme politikasını en baştan belirleyin.

A05 enjeksiyon açıkları (SQL, XSS) nasıl kapatılır?

Enjeksiyon, kullanıcıdan gelen verinin komut olarak yorumlanmasıdır. SQL enjeksiyonu veritabanı sorgusunu, siteler arası betik çalıştırma (XSS) ise tarayıcıdaki sayfayı hedef alır. Komut satırı ve LDAP enjeksiyonları da aynı kategoride yer alır. Liste bu başlığı güncel sürümde beşinci sıraya koydu.

Temel kural şudur: veriyi komutla asla birleştirmeyin. Yani kullanıcının yazdığı metni sorgu cümlesinin içine ekleyerek sorgu kurmayın. Bunun yerine parametreli sorgular kullanın; veritabanı sürücüsü veriyi komuttan ayrı taşır. Modern ORM araçları bunu varsayılan olarak yapar, ama ham sorgu yazdığınız yerlerde dikkatli olmalısınız.

XSS tarafında ise çıktıyı bağlama göre kaçırmanız gerekir. HTML içinde, öznitelik içinde ve JavaScript içinde kaçış kuralları farklıdır. Bu yüzden şablon motorunuzun otomatik kaçış özelliğini kapatmayın. Ek olarak Content-Security-Policy başlığı, gözden kaçan bir XSS açığının etkisini ciddi ölçüde daraltır.

  1. Tüm veritabanı erişimini parametreli sorguya taşıyın.
  2. Girdiyi izinli değer listesiyle doğrulayın; yasaklı listeye güvenmeyin.
  3. Çıktıyı bağlama uygun biçimde kaçırın.
  4. Veritabanı kullanıcısına yalnız ihtiyacı olan yetkiyi verin.

Ayrıntılı kod kalıpları için OWASP Cheat Sheet Series iyi bir başlangıç noktasıdır.

Dosya yükleme alanları da ayrı bir enjeksiyon kapısıdır. Yüklenen dosyanın adını ve türünü sunucuda yeniden kontrol edin, dosyaları çalıştırma yetkisi olmayan bir dizinde saklayın. Böylece resim diye yüklenen bir betik, sunucunuzda komut çalıştıramaz.

A06 güvensiz tasarım kodla düzeltilebilir mi?

Güvensiz tasarım, kod ne kadar temiz olursa olsun mantığın kendisinin açık vermesidir. Örneğin şifre sıfırlama akışı yalnız "anne kızlık soyadı" sorusuna dayanıyorsa, kusursuz kod bile bu zayıflığı kapatamaz. Dolayısıyla bu kategori, yazılım yazılmadan önceki kararlarla ilgilidir.

Sahada en çok iş kuralı açıklarında karşılaşıyorum. İndirim kuponunun aynı siparişte on kez uygulanabilmesi buna iyi bir örnek. Sepette eksi adet girilebilmesi de öyle. Bu hataları hiçbir tarayıcı araç bulamaz; çünkü teknik olarak her şey "doğru" çalışır.

  • Tasarım aşamasında tehdit modellemesi yapın: "Bu akış nasıl kötüye kullanılabilir?" sorusunu sorun.
  • Kötüye kullanım senaryolarını test senaryosu olarak yazın.
  • Kritik işlemlerde hız sınırı ve tekrar kontrolü koyun.
  • Güvenlik gereksinimlerini OWASP ASVS gibi bir doğrulama standardından seçin.

Bu yüzden güvenliği proje sonuna değil, başına koymanızı öneririm. Mimari kararların nasıl belgelendiğine dair bir örneği kurumsal web mimarisi yazımda bulabilirsiniz.

Kısacası tasarım hataları, en pahalı düzeltilen hatalardır. Canlıdaki bir akışı yeniden kurgulamak, taslak aşamasında bir soruyu sormaktan kat kat fazla emek ister.

A07 kimlik doğrulama hataları nasıl engellenir?

Kimlik doğrulama hataları, saldırganın başka bir kullanıcı gibi oturum açabilmesine yol açan zayıflıklardır. Kaba kuvvet denemelerine açık giriş formları, sızmış şifre listeleriyle yapılan denemeler ve zayıf oturum yönetimi bu kategoridedir.

Bu başlıkta en etkili önlem çok faktörlü doğrulamadır. Ben yönettiğim yönetim panellerinde iki adımlı doğrulamayı zorunlu tutuyorum. Ancak tek başına yeterli değildir. Oturum çerezlerinin güvenli ayarlanması ve başarısız denemelerin sınırlanması da gerekir.

  • Yönetici hesaplarında çok faktörlü doğrulamayı zorunlu yapın.
  • Başarısız giriş denemelerini IP ve hesap bazında sınırlayın.
  • Yeni şifreleri bilinen sızıntı listelerine karşı kontrol edin.
  • Oturum çerezlerinde Secure, HttpOnly ve SameSite ayarlarını kullanın.
  • Çıkışta ve şifre değişikliğinde tüm oturumları geçersiz kılın.

Öte yandan hata mesajları da bilgi sızdırır. "Bu e-posta kayıtlı değil" mesajı, saldırgana hangi hesapların var olduğunu söyler. Bunun yerine "E-posta veya şifre hatalı" gibi nötr bir ifade seçin.

Şifre politikası konusunda da güncel yaklaşımı izleyin. Karmaşık karakter zorunlulukları yerine uzun parolalar ve sızıntı kontrolü daha iyi sonuç verir. Böylece kullanıcılar şifrelerini not kâğıdına yazmak zorunda kalmaz.

A08 yazılım veya veri bütünlüğü hataları nelerdir?

Yazılım veya veri bütünlüğü hataları, doğrulanmamış kodun veya verinin güvenilir kabul edilmesidir. Otomatik güncellemenin imza kontrolü olmadan kurulması, CDN'den gelen bir betiğin bütünlük kontrolü olmadan çalıştırılması ve güvensiz serileştirme bu kategoriye girer.

Tedarik zinciri başlığıyla karışabilir; aradaki fark şu: A03 bileşenin kendisinin riskine odaklanır, A08 ise gelen kodun veya verinin yolda değiştirilip değiştirilmediğini sorar. Örneğin sitenize dış bir sunucudan bir JavaScript dosyası çağırıyorsanız, o sunucu ele geçirildiğinde sizin ziyaretçileriniz etkilenir.

  • Dış betiklerde Subresource Integrity (integrity özniteliği) kullanın.
  • Derleme hattınızda imzalı paketleri ve korumalı dalları zorunlu yapın.
  • Kullanıcıdan gelen serileştirilmiş nesneleri doğrudan açmayın.

Bu yüzden pazarlama etiketlerini eklerken de dikkatli olun. Her yeni izleme betiği, sayfanıza çalıştırma yetkisi olan bir yabancı koddur. Etiket yöneticisine kimin erişimi olduğunu düzenli olarak gözden geçirin.

Örneğin sık gördüğüm bir durum, eski bir kampanya için eklenen ve kimsenin hatırlamadığı bir izleme etiketidir. Sağlayıcı firma kapandığında alan adı başkasına geçebilir. O noktada sizin sayfanız, bir yabancının kodunu çalıştırmaya devam eder.

A09 loglama ve uyarı eksikliği neden saldırıyı uzatır?

Güvenlik loglama ve uyarı hataları, saldırının kaydedilmemesi veya kaydedilse bile kimseye haber verilmemesidir. Güncel sürüm başlığa "uyarı" kelimesini bilerek ekledi. Çünkü kimsenin okumadığı log, hiç tutulmamış logdan pek farklı değildir.

Bir müşteri projemde saldırı haftalarca sürmüştü ve loglar eksiksizdi. Ancak kimse onlara bakmıyordu. Sorunu fark ettiren şey bir güvenlik aracı değil, garip bir müşteri şikâyetiydi. O günden beri kritik olaylar için mutlaka anlık bildirim kuruyorum.

  • Başarısız girişleri, yetki reddini ve yönetici işlemlerini kaydedin.
  • Logları uygulamadan ayrı, değiştirilemez bir yerde saklayın.
  • Kritik olaylar için e-posta veya mesaj bildirimi kurun.
  • Loglara şifre, kart numarası gibi hassas veri yazmayın.

Ayrıca Google tarafındaki sinyalleri de izleyin. Search Console, sitenizde zararlı yazılım veya saldırı tespit ettiğinde "Güvenlik sorunları" raporunda uyarı verir. Kurulumu Google Search Console rehberimde anlattım.

Log saklama süresini de önceden belirleyin. Saldırıların bir kısmı ancak haftalar sonra fark edilir. Loglar birkaç gün içinde silinirse, olayın nasıl başladığını geriye dönük olarak inceleyemezsiniz.

A10 istisnai durumların yanlış ele alınması ne demek?

İstisnai durumların yanlış ele alınması, uygulamanın beklenmedik bir hata anında güvensiz davranmasıdır. Güncel sürümde yeni eklenen bu kategori; hataların yakalanmamasını, ayrıntılı hata mesajlarının kullanıcıya gösterilmesini ve "açık kalan" hata durumlarını kapsar.

Örneğin ödeme doğrulama servisi zaman aşımına uğradığında siparişi "ödendi" sayan bir kod düşünün. Normal koşullarda sorun yoktur. Ancak saldırgan servisi yavaşlatabilirse bedava sipariş verebilir. Buna "fail open" diyoruz; doğrusu belirsiz durumda işlemi reddetmektir, yani "fail closed" yaklaşımıdır.

  • Belirsiz durumlarda güvenli varsayılana dönün: işlemi reddedin veya bekletin.
  • Kullanıcıya genel mesaj gösterin, ayrıntıyı yalnız loga yazın.
  • Yarım kalan işlemleri geri alın; veritabanı işlemlerini (transaction) kullanın.
  • Dış servis hatalarını test ortamında bilerek tetikleyin.

Kısacası bu kategori, "her şey yolunda giderse" değil "işler ters giderse ne olur" sorusunu sorar.

Bu kategori özellikle ödeme, stok ve yetki işlemlerinde önemlidir. Çünkü bu akışlarda yarım kalan bir işlem, doğrudan para veya veri kaybı demektir. Test senaryolarınıza mutlaka "servis cevap vermezse ne olur?" sorusunu ekleyin.

OWASP Top 10 kategorileri ve önlemleri tek tabloda

Aşağıdaki tablo, OWASP Top 10 kategorilerini sahada karşılaştığım tipik örnek ve ilk önlemle birlikte özetliyor. Tabloyu ekibinizle bir kontrol toplantısında kullanabilirsiniz.

KodKategoriTipik örnekİlk önlem
A01Bozuk erişim kontrolüURL'deki kimliği değiştirip başkasının kaydını görmekHer istekte sunucu tarafı yetki kontrolü
A02Yapılandırma hatalarıWeb kökünde unutulmuş yedek dosyasıSertleştirilmiş şablon, güvenlik başlıkları
A03Tedarik zinciriTerk edilmiş eklentiSBOM ve bağımlılık taraması
A04Kriptografik hatalarTuzsuz MD5 şifreArgon2 veya bcrypt, TLS
A05EnjeksiyonBirleştirilmiş SQL sorgusuParametreli sorgu, çıktı kaçışı
A06Güvensiz tasarımTekrar uygulanabilen kuponTehdit modellemesi
A07Kimlik doğrulamaSınırsız giriş denemesiÇok faktörlü doğrulama, hız sınırı
A08Bütünlük hatalarıKontrolsüz dış betikSubresource Integrity, imzalı paket
A09Loglama ve uyarıOkunmayan loglarAnlık uyarı kuralları
A10İstisna yönetimiZaman aşımında onaylanan ödemeFail closed yaklaşımı

Tablo bir başlangıç noktasıdır. Her satırın altında onlarca ayrıntı bulunur; bu yüzden resmi kaynağa dönmeyi ihmal etmeyin.

Tabloyu doldururken her satıra bir de durum sütunu ekleyebilirsiniz: yapıldı, planlandı veya bilinmiyor. Açıkçası en tehlikeli cevap "bilinmiyor" olur; çünkü bu, kimsenin o riski sahiplenmediğini gösterir.

Küçük bir ekip OWASP Top 10 kontrolüne nereden başlamalı?

Küçük ekiplerde her şeyi aynı anda yapmak mümkün değil. Ben genellikle etkisi yüksek, maliyeti düşük adımlarla başlıyorum. Aşağıdaki sıra, saha tecrübeme dayalı bir önerdir, garanti değildir; sizin sisteminiz farklı öncelik gerektirebilir.

  1. Yönetici hesaplarında çok faktörlü doğrulamayı açın.
  2. Tüm eklenti, çatı ve sunucu yazılımlarını güncelleyin; kullanılmayanları silin.
  3. Web kökündeki yedek ve yapılandırma dosyalarını temizleyin.
  4. Hata ayrıntılarını üretimde kapatın ve güvenlik başlıklarını ekleyin.
  5. Giriş formlarına hız sınırı koyun.
  6. Kritik olaylar için anlık bildirim kurun.
  7. Veritabanı erişimini parametreli sorgulara taşıyın.
  8. Yetki kontrollerini sunucu tarafında test edin.

Bu sekiz adım çoğu küçük sitede birkaç iş gününde tamamlanabilir; ancak süre, sistemin yaşına ve kod kalitesine göre değişir. Sonrasında daha derin testlere geçebilirsiniz.

Bu listeyi bir kez bitirip bırakmayın; her büyük sürümde tekrar edin. Her adımı tamamladığınızda tarihini ve sorumlusunu bir tabloya yazın. Böylece altı ay sonra neyin yapıldığını, neyin eksik kaldığını tartışmadan görebilirsiniz.

OWASP Top 10 açıklarını hangi araçlarla test edebilirsiniz?

Otomatik tarayıcılar, yapılandırma hataları ve bilinen enjeksiyon kalıpları gibi teknik açıkları hızlı bulur. OWASP'ın kendi açık kaynak projesi olan ZAP, başlangıç için iyi bir seçenektir. Ancak tarayıcıyı yalnız kendi sitenizde veya yazılı izin aldığınız sistemlerde çalıştırın.

Öte yandan araçların kör noktaları vardır. Bozuk erişim kontrolü ve güvensiz tasarım gibi iş mantığı hatalarını çoğu zaman yalnız insan testi bulur. Bu yüzden otomatik taramayı, elle yapılan bir gözden geçirmeyle birleştirmenizi öneririm.

  • Statik analiz (SAST): Kodu çalıştırmadan inceler; enjeksiyon kalıplarını erken yakalar.
  • Dinamik analiz (DAST): Çalışan siteye istek gönderir; yapılandırma hatalarını bulur.
  • Bağımlılık taraması (SCA): Bilinen açığı olan paketleri listeler.
  • Elle test: Yetki ve iş mantığı hatalarını yakalar.

Örneğin her sürümde otomatik taramayı, yılda bir veya büyük değişikliklerden sonra da elle testi planlayabilirsiniz.

Tarama sonuçlarını da körü körüne kabul etmeyin. Otomatik araçlar yanlış alarm üretebilir. Her bulguyu önem derecesine göre sıralayın, gerçekten istismar edilebilir olanları önce kapatın ve yanlış alarmları gerekçesiyle not edin.

Hacklenen bir site OWASP Top 10 açıkları yüzünden sıralama kaybeder mi?

Evet, dolaylı ama ciddi biçimde kaybedebilir. Enjeksiyon veya yapılandırma açığından giren saldırganlar çoğu zaman sitenize spam sayfalar, gizli linkler veya yönlendirmeler ekler. Google bu tür içeriği tespit ettiğinde arama sonuçlarında uyarı gösterebilir ve kullanıcı güveni hızla düşer.

SEO danışmanlığı yaptığım projelerde ani ve açıklanamayan trafik düşüşlerinde ilk baktığım yerlerden biri güvenliktir. Örneğin sitemap dosyasında tanımadığınız binlerce adres görüyorsanız, sorun içerik değil güvenlik olabilir. Teknik taraftaki diğer kontrolleri teknik SEO ipuçları yazımda topladım.

Dolayısıyla güvenlik ve SEO ayrı departmanlar gibi görünse de aynı sonuca hizmet eder. Temizlik sonrası toparlanma süreci için SEO danışmanlığı kapsamında destek veriyorum.

Temizlikten sonra Search Console üzerinden yeniden inceleme talebi gönderebilirsiniz. Ancak açığı kapatmadan temizlik yaparsanız saldırgan aynı yoldan geri gelir. Bu yüzden önce giriş noktasını bulun, sonra içeriği temizleyin.

Ek olarak sunucu kayıtlarındaki tuhaf bot trafiği, hacklenmiş sitelerde sık görülen bir işarettir.

Güvenliği web tasarım sürecine nasıl dahil edersiniz?

En ucuz güvenlik açığı, hiç yazılmamış olanıdır. Bu yüzden web tasarım projelerimde güvenlik gereksinimlerini teklif aşamasında yazıya döküyorum. Hangi verinin toplanacağı, kimin neye erişeceği ve hangi eklentilerin kullanılacağı en baştan belli olur.

Ayrıca teslim öncesi kısa bir kontrol listesi uyguluyorum: yönetici hesapları, güvenlik başlıkları, yedekleme ve güncelleme planı. Yani proje bittiğinde müşteri yalnız bir tasarım değil, bakımı tanımlanmış bir sistem alıyor.

  • Teklifte veri envanterini ve rolleri yazın.
  • Eklenti ve paket seçiminde bakım geçmişine bakın.
  • Teslimde güncelleme sorumlusunu isimle belirleyin.

Öte yandan güvenlik tek seferlik bir iş değildir. Bakım anlaşması olmayan bir site, birkaç ay sonra A03 kategorisine aday hale gelir.

Teslimden sonraki ilk ay, güncellemeleri birlikte yapmayı da öneriyorum; böylece müşteri ekibi süreci yerinde öğrenir. Bir de şunu ekleyeyim: güvenlik gereksinimleri tasarımcıyı kısıtlamaz. İyi kurgulanmış bir giriş ekranı hem güvenli hem kullanışlı olabilir. Önemli olan, bu iki hedefi aynı masada konuşmaktır.

Sonuç: OWASP Top 10 bir kontrol çerçevesidir

OWASP Top 10, sitenizi güvenli yapmaz; sitenizi nereden kontrol edeceğinizi söyler. Listenin gücü, ekipler arasında ortak bir dil oluşturmasıdır. Geliştirici, tasarımcı ve yönetici aynı "A01" ifadesini duyduğunda aynı riski anlar.

Benim önerim şu: bu yazıdaki tabloyu alın, her satır için "bizde durum ne?" sorusunu sorun ve cevabı bir sorumlu isimle eşleştirin. Güvenlik ile SEO arasındaki bağlantıyı projenizde birlikte ele almak isterseniz iletişim sayfasından bana ulaşabilirsiniz.

Güvenlik, iyi bir tasarım gibi, görünmediğinde başarılıdır. Ziyaretçiniz hiçbir şey fark etmez; ama siz verinin, sıralamanın ve itibarın korunduğunu bilirsiniz. Bu listeyi yılda en az bir kez ekibinizle yeniden gözden geçirin.

Sıkça Sorulan Sorular

OWASP Top 10 bir standart mıdır?
Hayır, OWASP Top 10 bir standart değil, farkındalık belgesidir. En kritik risk kategorilerini sıralar ve ekiplere öncelik verir. Denetlenebilir gereksinim listesi istiyorsanız OWASP ASVS daha uygun bir kaynaktır. Ben projelerde Top 10 listesini başlangıç haritası, ASVS belgesini ise ayrıntılı kontrol listesi olarak kullanıyorum.
OWASP Top 10 ne sıklıkla güncellenir?
Belirli bir takvimi yok, ancak liste genellikle birkaç yılda bir güncellenir. Önceki sürüm 2021 yılında, güncel sürüm ise 2025 yılında yayımlandı. Her yeni sürümde veri toplama ve topluluk anketi yapılır. Bu yüzden eski sürüme göre yazılmış kontrol listelerinizi yeni kategori adlarıyla eşleştirmeniz gerekir.
Küçük bir kurumsal site için OWASP Top 10 gerekli mi?
Evet, küçük siteler de aynı saldırı araçlarıyla taranır. Saldırganlar çoğu zaman hedef seçmez, genellikle otomatik araçlarla açık arar. Güncel olmayan bir eklenti veya zayıf bir yönetici şifresi, küçük bir siteyi de spam dağıtım noktasına çevirebilir. Temel önlemler zaten düşük maliyetlidir.
WordPress siteler en çok hangi OWASP kategorisinden etkilenir?
Saha tecrübeme göre en sık tedarik zinciri ve yapılandırma kategorileriyle karşılaşıyorum. Güncellenmeyen eklentiler, terk edilmiş temalar ve varsayılan ayarlar başı çekiyor. Bu bir istatistik değil, gözlemdir. Düzenli güncelleme, gereksiz eklentileri silme ve yönetici hesabına çok faktörlü doğrulama eklemek riski belirgin şekilde azaltır.
Otomatik güvenlik taraması tüm OWASP Top 10 açıklarını bulur mu?
Hayır, bulamaz. Tarayıcılar yapılandırma hatalarını ve bilinen enjeksiyon kalıplarını iyi yakalar. Ancak bozuk erişim kontrolü ve güvensiz tasarım gibi iş mantığı hataları genellikle deneyimli birinin yaptığı elle test gerektirir. En sağlıklı yaklaşım, her sürümde otomatik taramayı düzenli aralıklarla yapılan insan testiyle birleştirmektir.
Hacklenen sitem Google'da cezalandırılır mı?
Google zararlı içerik veya saldırı tespit ederse arama sonuçlarında uyarı gösterebilir ve Search Console güvenlik raporunda sizi bilgilendirir. Temizliği yapıp yeniden inceleme talebi gönderdiğinizde uyarı kaldırılabilir. Ancak kullanıcı güvenini geri kazanmak zaman alır. Bu yüzden önceden önlem almak, sonradan temizlemekten her zaman daha ucuzdur.
#OWASP Top 10#web güvenliği#SQL enjeksiyonu#XSS#erişim kontrolü#güvenlik açıkları
Paylaş:
Talha Aslan
Talha Aslan

Google Partner dijital pazarlama uzmanı. 2012’den beri SEO, Google Ads, web tasarım ve e-ticaret projelerinde sahada; bu blogda gördüğünüz her yazı o deneyimden çıkar.

Sıradaki proje

Projenizi konuşalım.

Aracı yok, katman yok: doğrudan işi yapacak uzmanla konuşursunuz. İlk istişare ücretsizdir; hedefinizi dinler, net bir yol haritasıyla dönerim.

WhatsApp Hemen Ara