Bu kontrol listesi, yeni bir web sitesi veya web uygulaması yayınlamaya hazırlanan geliştiriciler, teknik kurucu ortaklar ve web ekipleri için hazırlanmıştır. DNS kayıtlarınızı canlıya almadan önce her adımı tamamlayın. Tek bir alanı bile atlamak, kullanıcılarınızı, verilerinizi ve itibarınızı ilk günden itibaren riske atabilir.
Her Yerde HTTPS Zorunlu Kılın
Şifrelenmemiş HTTP, kullanıcılarınızı gizlice dinleme, kimlik bilgisi hırsızlığı ve içerik enjeksiyonuna karşı savunmasız bırakır. Geçerli bir TLS sertifikası, her modern site için temel gerekliliktir — isteğe bağlı değildir.
- Geçerli bir TLS sertifikası edinin (Let's Encrypt, barındırma sağlayıcınız veya ticari bir CA) ve sunduğunuz her alan adı ve alt alan adına kurun.
- Tüm HTTP trafiğini (port 80) kalıcı 301 yönlendirmesiyle HTTPS'ye (port 443) yönlendirin — bunu yalnızca uygulama kodunda değil, web sunucusu seviyesinde yapın.
- Sertifikanın kullanmayı planladığınız tüm alt alan adlarını kapsadığını doğrulayın (wildcard veya ayrı SAN'lar).
- Sertifika sona erme tarihini kontrol edin ve hiçbir zaman süresi dolmaması için otomatik yenilemeyi ayarlayın.
- Tarayıcı konsolunda karışık içerik uyarısı olmadığını onaylayın — her varlık (resimler, scriptler, fontlar, iframe'ler) HTTPS üzerinden yüklenmelidir.
- Bir yönlendirme bir şekilde eksik olsa bile tarayıcıların düz HTTP üzerinden bağlanmayı reddetmesi için HTTP Strict Transport Security'yi (HSTS) etkinleştirin (bkz. Adım 02).
HTTP Güvenlik Başlıklarını Yapılandırın
Güvenlik başlıkları, sunucunuzun tarayıcıya gönderdiği talimatlardır. Web güvenliğinde en hızlı kazanımlardan biridir — birkaç satır sunucu yapılandırması tüm saldırı kategorilerini engelleyebilir. Sensagraph, sitenizdeki eksik veya yanlış yapılandırılmış güvenlik başlıklarını otomatik olarak kontrol eder.
- Strict-Transport-Security (HSTS):
max-agedeğerini en az 31536000 (bir yıl) olarak ayarlayın; tüm alt alan adlarının HTTPS'yi desteklediğinden emin olduktan sonraincludeSubDomainsekleyin. - Content-Security-Policy (CSP): Yalnızca kasıtlı olarak script, stil ve medya yüklediğiniz kaynakları izin veren bir politika tanımlayın. Rapor modunda başlayın, ihlalleri inceleyin, ardından uygulayın.
- X-Frame-Options: Clickjacking'i önlemek için
DENYveyaSAMEORIGINolarak ayarlayın. - X-Content-Type-Options: Tarayıcıların MIME türlerini tahmin etmesini durdurmak için
nosniffolarak ayarlayın. - Referrer-Policy: Referer başlığında URL sızıntısını önlemek için
strict-origin-when-cross-originveya daha katı bir değer kullanın. - Permissions-Policy: Kullanmadığınız tarayıcı özelliklerini (kamera, mikrofon, konum vb.) devre dışı bırakın.
X-Powered-ByveServergibi sunucu teknolojisini açığa çıkaran başlıkları kaldırın veya gizleyin.
Kimlik Doğrulama ve Erişim Kontrolünü Güçlendirin
Zayıf kimlik doğrulama, web sitesi güvenliğinin ihlal edilmesinin başlıca nedenlerinden biridir. Yayına girmeden önce yönetici, dağıtım, veritabanı ve son kullanıcı dahil her hesabı güvenli hale getirin.
- Güçlü parola gereksinimleri uygulayın (minimum 12 karakter, yaygın parolalar yasak) veya daha iyisi NIST SP 800-63B ile uyumlu bir parola cümlesi politikası kullanın.
- Tüm yönetici ve ayrıcalıklı hesaplar için çok faktörlü kimlik doğrulamayı (MFA) etkinleştirin — mümkün olan yerde SMS yerine TOTP uygulamaları kullanın.
- Her varsayılan kimlik bilgisini değiştirin: CMS yönetici kullanıcı adları ve parolaları, veritabanı kullanıcıları, barındırma kontrol panelleri ve SSH anahtarları.
- En az ayrıcalık ilkesini uygulayın — her kullanıcı hesabı ve servis yalnızca gerçekten ihtiyaç duyduğu izinlere sahip olmalıdır.
- Kimlik bilgisi doldurma saldırılarını yavaşlatmak için tekrarlanan başarısız oturum açma girişimlerinden sonra hesap kilitleme veya hız sınırlaması uygulayın.
- Parola sıfırlama akışlarının, süresi dolan tek kullanımlık token'lar kullandığından ve bir e-postanın kayıtlı olup olmadığını açıklamadığından emin olun.
- Parolaları güçlü bir uyarlanabilir hash fonksiyonu (bcrypt, Argon2 veya scrypt) kullanarak saklayın — asla MD5, SHA-1 veya tek başına düz SHA-256 kullanmayın.
- OAuth veya SSO kullanıyorsanız, yönlendirme URI'lerinin açıkça beyaz listelendiğini ve token'ların doğru şekilde doğrulandığını kontrol edin.
Tüm Kullanıcı Girdilerini Doğrulayın ve Temizleyin
SQL enjeksiyonu, Cross-Site Scripting (XSS), komut enjeksiyonu ve yol geçişi gibi enjeksiyon açıkları, en çok istismar edilen web kusurları olmaya devam etmektedir. Hepsinin ortak nedeni aynıdır: kullanıcı tarafından sağlanan verilere güvenmek.
- Her veritabanı etkileşimi için parametreli sorgular veya hazırlanmış ifadeler kullanın — asla kullanıcı girdisini SQL dizelerine birleştirmeyin.
- Her form alanını doğrulamak için bir izin listesi (yalnızca engel listesi değil) uygulayın: beklenen tür, uzunluk, biçim ve aralık.
- Çıktıyı bağlamına göre doğru şekilde kodlayın — HTML'de işlenen veriler için HTML kodlaması, JSON yanıtları için JSON kodlaması, sorgu parametreleri için URL kodlaması kullanın.
- Framework'ünüzün yerleşik XSS korumasını ve şablon otomatik kaçırmasını kullanın; belgelenmiş bir neden olmadan asla devre dışı bırakmayın.
- Dosya yükleme adlarını temizleyin ve MIME türlerini sunucu tarafında doğrulayın; yüklenen dosyaları web kökünün dışında veya çalıştırma izni olmayan bir nesne depolama alanında saklayın.
- Dosya yollarını kanonik bir işlevle çözümleyerek ve amaçlanan dizin içinde kaldıklarını onaylayarak yol geçişini önleyin.
- Uygulamanızın işlediği her giriş alanını, URL parametresini ve HTTP başlığını test edin — bunların hepsi saldırı yüzeyleridir.
Bağımlılıkları ve Üçüncü Taraf Kodları Denetleyin
Modern web siteleri düzinelerce açık kaynak paketi ve üçüncü taraf scripti kullanır. Her biri potansiyel bir giriş noktasıdır. Bir olaydán sonra değil, yayın öncesinde denetleyin.
- Dil ekosistemine uygun aracı çalıştırın (
npm audit,composer audit,pip-auditvb.) ve yayın öncesi tüm yüksek ve kritik güvenlik açıklarını çözün. - Güncellemelerin sessizce yeni kod getirmemesi için bağımlılık sürümlerini kilit dosyanızda (
package-lock.json,composer.lockvb.) sabitleyin. - Tarayıcıda yüklenen her üçüncü taraf JavaScript etiketini (analitik, sohbet widget'ları, reklam ağları) inceleyin — her biri sayfaya tam erişimle çalışır. CDN'lerden yüklenen scriptler için Subresource Integrity (SRI) hash'leri kullanın.
- Kullanılmayan bağımlılıkları tamamen kaldırın — her ekstra paket, ihtiyaç duymadığınız bir saldırı yüzeyidir.
- Gelecekteki güncellemelerde yeni güvenlik açıklarının otomatik olarak yakalanması için CI pipeline'ınıza bağımlılık tarama aracı ekleyin.
- CMS'nizin, framework'ünüzün ve tüm eklentilerin en son kararlı sürümde olduğundan ve bilinen yamasız CVE'leri bulunmadığından emin olun.
Sunucu ve Barındırma Ortamını Güvenli Hale Getirin
Temel sunucu kötü yapılandırılmışsa uygulama düzeyindeki güvenlik zaafa uğrar. Sunucuyu saldırı yüzeyinizin bir parçası olarak değerlendirin.
- Gerekli olmayan tüm servisleri, portları ve daemonları devre dışı bırakın veya kaldırın — internete açık olması gerekmeyen her portu kapatın.
- Yalnızca gerekli gelen trafiğe izin verecek şekilde bir güvenlik duvarı yapılandırın (genellikle 80, 443 ve standart dışı bir SSH portu).
- SSH parola kimlik doğrulamasını devre dışı bırakın ve yalnızca anahtar tabanlı kimlik doğrulamayı kullanın; ek düşük maliyetli bir caydırıcı olarak SSH'yi standart dışı bir porta taşıyın.
- İşletim sistemini ve tüm sunucu yazılımlarını (web sunucusu, PHP-FPM, Node çalışma zamanı vb.) yamalı ve güncel tutun.
- Uygulama sürecinizi root olmayan, düşük ayrıcalıklı bir kullanıcı olarak çalıştırın.
- Bilgi açığa çıkaran web sunucusu özelliklerini devre dışı bırakın: sunucu token'ları, sürüm başlıkları ve dizin listeleme.
- Bir bulut sağlayıcısı kullanıyorsanız güvenlik grubu / güvenlik duvarı kurallarınızı, IAM rollerinizi ve bucket politikalarınızı denetleyin — hassas içerikli genel S3 bucket'ları yaygın bir yanlış yapılandırmadır.
Dosya ve Dizin İzinlerini Kısıtlayın
Aşırı izin veren dosya izinleri sessiz bir risktir — saldırganların başka bir yerde tutunması durumunda yapılandırma dosyalarını okumalarına veya kötü amaçlı scriptler yazmalarına izin verebilir.
- Web'e erişilebilir dizinlerin dizin listelemeye izin vermediğini onaylayın (açık dizin istekleri için dosya dizini değil, 403 veya 404 döndürün).
.env,config.php, veritabanı kimlik bilgileri, özel anahtarlar ve gizli dosyaların genel URL üzerinden erişilebilir olmadığından emin olun — bunu doğrudan bir tarayıcıda test edin.- Dosya izinlerini, web sunucusu sürecinin uygulama dosyalarını okuyabileceği ancak uygulamanız açıkça gerektirmedikçe bunlara yazamayacağı şekilde ayarlayın.
.git,.svn,composer.json,package.json, yedek dosyalar (*.bak,*.sql) ve log dosyalarını web kökünün dışında tutun veya sunucu yapılandırmasında engelleyin.- Hassas yönetici rotaları veya hazırlık URL'lerinin kamuya açık şekilde dizinlenmediğini doğrulayın —
robots.txt'yi dikkatli kullanın (herkese açıktır) ve hazırlık ortamları için kimlik doğrulaması veya IP kısıtlamasını tercih edin.
Çerezleri ve Oturum Yönetimini Koruyun
Çerezler düzgün yapılandırılmadığında oturum ele geçirme ve çerez hırsızlığı son derece kolaydır. Bunu doğru yapmak, sitenizdeki her kimliği doğrulanmış kullanıcıyı korur.
- Çerezlerin asla düz HTTP üzerinden gönderilmemesi için tüm çerezlere
Securebayrağını ayarlayın. - JavaScript'in çerezleri okumasını önlemek (XSS tabanlı hırsızlığı azaltmak) için oturum ve kimlik doğrulama çerezlerine
HttpOnlybayrağını ayarlayın. - Çerez sızıntısı yoluyla Cross-Site Request Forgery'yi (CSRF) önlemek için
SameSiteözelliğiniStrictveyaLaxolarak ayarlayın. - Uzun, rastgele üretilmiş, kriptografik olarak güvenli oturum tanımlayıcıları kullanın — asla tahmin edilebilir ID'leri açığa çıkarmayın.
- Oturum sabitleme saldırılarını önlemek için başarılı oturum açma işleminin ardından oturum kimliğini yenileyin.
- Uygun oturum zaman aşımı değerleri belirleyin ve hassas uygulamalar için boşta kalma oturumu süre sonunu uygulayın.
- Çerez tabanlı kimlik doğrulamasına dayanan tüm durum değiştiren formlar ve API uç noktaları için CSRF token'ları ekleyin.
Hata Yönetimi ve Günlük Kaydını Yapılandırın
Ayrıntılı hata mesajları saldırganlara büyük kolaylık sağlar — yığın izlerini, dosya yollarını, veritabanı şemalarını ve teknoloji sürümlerini ortaya koyar. Öte yandan iyi günlük kaydı, bir şeyler ters gittiğinde en iyi adli araçtır.
- Yayın öncesinde uygulamanızı üretim moduna geçirin — hata ayıklama modunu, yığın izi çıktısını ve genel ziyaretçilere ayrıntılı hata sayfalarını devre dışı bırakın.
- Kullanıcılara genel, kullanıcı dostu bir hata sayfası (500, 404 vb.) gösterirken tam teknik ayrıntıyı yalnızca sunucu tarafında günlüğe kaydedin.
- Kimlik doğrulama olaylarını kaydedin: başarılı girişler, başarısız girişimler, parola sıfırlamalar ve hesap kilitlemeleri.
- Hassas eylemlere erişimi kaydedin: yönetici işlemleri, veri dışa aktarmaları, izin değişiklikleri.
- Log dosyalarının web kökünün dışında bir konuma yazıldığından ve URL üzerinden erişilemez olduğundan emin olun.
- Logların olay soruşturması için mevcut olması ancak sınırsız büyümemesi için log rotasyon ve saklama politikaları ayarlayın.
- Sunucu güvenliği ihlal edilse bile korunmaları için logları merkezi bir log yönetim hizmetine göndermeyi değerlendirin.
DNS, E-posta ve Alan Adı Yapılandırmanızı Gözden Geçirin
DNS yanlış yapılandırmaları ve eksik e-posta kimlik doğrulama kayıtları, saldırganların alan adınızı taklit etmesine, alt alan adı ele geçirme yoluyla trafiği engellemesine veya sizden geliyormuş gibi görünen kimlik avı e-postaları göndermesine olanak tanır.
- Adınıza posta göndermesine izin verilen posta sunucularını belirtmek için alan adınıza bir SPF kaydı ekleyin.
- Tüm giden e-posta akışları için DKIM imzalamayı yapılandırın.
- Bir DMARC politikası yayımlayın — raporları toplamak için
p=noneile başlayın, ardından görünürlük elde etincequarantineveyareject'e geçin. - Artık kullanmadığınız servislere işaret eden sarkan CNAME'ler için DNS kayıtlarınızı denetleyin — bunlar alt alan adı ele geçirme için kullanılabilir.
- Kayıt şirketiniz destekliyorsa alan adınızda DNSSEC'i etkinleştirin.
- Alan adı kayıt şirketi hesabınızın güçlü bir parola ve MFA kullandığından emin olun — çalınan bir alan adı felakete yol açabilir.
- Hizmetleri kapatılmış ancak hala onlara işaret eden DNS kayıtları bulunan tüm alt alan adlarını gözden geçirin.
Yayın Öncesinde Kapsamlı Otomatik Güvenlik Taraması Yapın
Manuel kontrol listeleri pek çok sorunu yakalar, ancak otomatik tarama gözden kaçırdıklarınızı bulur — yanlış yapılandırmalar, açık uç noktalar, zayıf TLS ayarları ve bilinen güvenlik açıkları. Yukarıdaki tüm adımları tamamladıktan sonra bir tarama yapın, işaretlenen her şeyi düzeltin ve ardından canlıya geçin. Sensagraph, sitenizdeki bu kontrol listesinde ele alınan sorunları sürekli olarak tarayarak ilk günden itibaren güvenlik durumunuz hakkında güncel bir görünüm sağlar.
- Yalnızca ana sayfayı değil, tüm alt alan adları dahil olmak üzere sitenin tamamını tarayın.
- TLS yapılandırmasını doğrulayın: protokol sürümleri, şifre takımları, sertifika zinciri ve HSTS davranışı.
- Tüm güvenlik başlıklarının mevcut ve doğru yapılandırılmış olduğunu kontrol edin.
- Yaygın web açıklarını test edin: açık yönlendirmeler, bilgi ifşası sayfaları, açık yönetici arayüzleri ve dizin listeleme.
- Tarama raporunu inceleyin ve DNS kayıtlarınızı yayımlamadan veya lansman duyurusunu yapmadan önce tüm yüksek ve kritik bulguları düzeltin.
- Güncellemeler veya içerik değişiklikleriyle ortaya çıkan yeni sorunların hızla yakalanması için yayın sonrası sürekli otomatik taramalar planlayın.