Saldırmadan yapabileceğiniz web sitesi güvenlik kontrolleri
Online mağazalar için pasif güvenlik kontrolü: TLS sertifika süresi, HSTS, CSP, nosniff, çerez bayrakları, karma içerik, eski jQuery, security.txt, DMARC.
FixReports editör ekibi10 dk okuma
Bir online mağazanın güvenlik ayarlarının büyük bölümünü, sitenin her ziyaretçiye zaten gönderdiği bilgileri okuyarak dışarıdan kontrol edebilirsiniz: TLS sertifikası, yönlendirmeler, HTTP yanıt başlıkları, çerezler, yüklenen script’ler ve herkese açık DNS kayıtları. Bu pasif kontroller saldırı trafiği göndermez ve giriş yapmayı gerektirmez; bu yüzden mağazaya normal bir ziyaretten fazla yük bindirmez. Süresi dolmak üzere olan bir sertifika, eksik HSTS, güvensiz çerezler, karma içerik (mixed content) veya bilinen açıkları olan bir jQuery sürümü gibi yapılandırma eksiklerini yakalar. Bir sızma testi değildir ve bir mağazanın güvenli olduğunu kanıtlayamaz.
Temel noktalar
- 15 Mart 2026’dan bu yana düzenlenen, herkesçe güvenilen TLS sertifikaları en fazla 200 gün geçerli olabilir; bu süre Mart 2027’de 100 güne, Mart 2029’da 47 güne iner (CA/Browser Forum (yeni sekmede açılır)).
- Tarayıcılar, düz HTTP üzerinden gönderilen HSTS başlığını yok sayar (MDN (yeni sekmede açılır)).
- CSP
frame-ancestorsyönergesi bir<meta>etiketinde çalışmaz; yanıt başlığı olarak gönderilmesi gerekir (MDN (yeni sekmede açılır)). - 3.5.0’dan önceki jQuery sürümleri iki XSS açığından etkilenir ve CISA bunlardan biri olan CVE-2020-11023’ü 23 Ocak 2025’te Known Exploited Vulnerabilities (istismar edildiği bilinen açıklar) kataloğuna ekledi (NVD (yeni sekmede açılır)).
- Bir
security.txtdosyasıContactveExpiresalanlarını içermeli ve/.well-known/security.txtadresinde bulunmalıdır (RFC 9116 (yeni sekmede açılır)).
Pasif güvenlik kontrolü ne demektir?
Pasif kontrol, yalnızca sitenin veya DNS’inin sıradan bir isteğe döndürdüğü yanıtı okur.
Bu; herkese açık sayfaları yüklemek, sertifikayı ve yanıt başlıklarını okumak, bir sayfanın ayarladığı çerezleri ve yüklediği script’leri listelemek ve herkese açık DNS kayıtlarını sorgulamak demektir. Pasif bir kontrol parola tahmin etmez, enjeksiyon yükleri (payload) göndermez, yönetici paneli URL’lerini yoklamaz veya port taraması yapmaz. Aşağıdakilerin tümü bir tarayıcı, curl, openssl ve dig ile yapılabilir.
TLS sertifikanızı ve son kullanma tarihini nasıl kontrol edersiniz?
Sertifikanın tarihlerini ve adlarını doğrudan okuyun ve yenilemenin otomatik yapıldığından emin olun.
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates
notAfter tarihinin rahatça ileride olduğunu, ikisini de kullanıyorsanız sertifikanın hem example.com hem de www.example.com adını kapsadığını (tarayıcının sertifika görüntüleyicisi adları listeler) ve tarayıcının hiçbir uyarı göstermediğini kontrol edin. Sertifika geçerlilik süreleri, 11 Nisan 2025’te kabul edilen Ballot SC-081v3 (yeni sekmede açılır) kararının ardından CA/Browser Forum Baseline Requirements kapsamında kısalıyor (bölüm 6.3.2; Ekim 2026 itibarıyla sürüm 2.3.1):
| Sertifikanın düzenlendiği tarih | Azami geçerlilik süresi |
|---|---|
| 15 Mart 2026’dan önce | 398 gün |
| 15 Mart 2026 ile 14 Mart 2027 arası | 200 gün |
| 15 Mart 2027 ile 14 Mart 2029 arası | 100 gün |
| 15 Mart 2029’dan itibaren | 47 gün |
Kısa geçerlilik süreleri elle yenilemeyi riskli hale getirir; bu yüzden hosting sağlayıcınızın veya sertifika aracınızın otomatik yenileme yaptığını doğrulayın. Düz HTTP’nin HTTPS’e yönlendirildiğini de doğrulayın:
curl -sI http://example.com/ | grep -i -E "^HTTP|^location"
Görmeniz gereken, location başlığı https:// ile başlayan bir 301 (veya 308) yanıtıdır.
Bir online mağaza hangi güvenlik başlıklarını göndermeli?
Birkaç yanıt başlığından oluşan küçük bir set, tarayıcı tarafındaki yaygın saldırıları neredeyse hiçbir maliyet olmadan engeller.
| Başlık | Ne işe yarar | Tipik değer | Kaynak |
|---|---|---|---|
Strict-Transport-Security | Tarayıcılara yalnızca HTTPS kullanmalarını söyler ve kullanıcıların sertifika hatalarını geçip siteye girmesini engeller | max-age=31536000; includeSubDomains | MDN (yeni sekmede açılır) |
Content-Security-Policy: frame-ancestors | Sayfalarınızı hangi sitelerin gömebileceğini kontrol eder; bu da tıklama korsanlığına (clickjacking) karşı korur | frame-ancestors 'self' | MDN (yeni sekmede açılır) |
X-Frame-Options | Eski çerçeveleme kontrolü; OWASP’a göre destekleyen tarayıcılarda frame-ancestors bunu geçersiz kılar | DENY veya SAMEORIGIN | OWASP (yeni sekmede açılır) |
X-Content-Type-Options | MIME türü tahminini (MIME sniffing) durdurur ve yanlış türle sunulan script ve stil dosyalarını engeller | nosniff | MDN (yeni sekmede açılır) |
Referrer-Policy | URL’lerinizin ne kadarının başka sitelere gönderileceğini sınırlar | strict-origin-when-cross-origin | OWASP |
X-XSS-Protection | Tarayıcının XSS filtresi başlığı; OWASP’a göre aksi halde güvenli olan sitelerde XSS açıkları oluşturabilir | Ayarlamayın veya 0 kullanın | OWASP |
Mağazanızın ne gönderdiğini kontrol edin:
curl -sI https://example.com/
Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Security-Policy: frame-ancestors 'self'
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
İki uyarı. includeSubDomains, yalnızca HTTP üzerinden çalışan tüm alt alan adlarını engeller; bu yüzden önce alt alan adlarınızı kontrol edin. HSTS ön yüklemesi (preload) için max-age değerinin en az 31536000 olması ve includeSubDomains gerekir; bu nedenle preload değerini yalnızca tüm alt alan adlarınız HTTPS’e hazır olduğunda ekleyin. Script’leri kısıtlayan tam bir CSP edinmeye değer, ancak OWASP bunun yapılandırılmasının ve bakımının karmaşık olduğunu belirtir; çok sayıda uygulama kullanan mağazaların bunu dikkatle test etmesi gerekir.
Çerezleriniz Secure, HttpOnly ve SameSite ile ayarlanmış mı?
Oturum ve sepet çerezleri bu üç özniteliğin üçünü de taşımalıdır; bunları Set-Cookie yanıt başlıklarında görebilirsiniz.
| Öznitelik | Etkisi (kaynak: MDN (yeni sekmede açılır)) | Nerede önemlidir |
|---|---|---|
Secure | Yalnızca HTTPS üzerinden gönderilir; düz HTTP kullanan siteler bunu ayarlayamaz | HTTPS kullanan bir mağazadaki tüm çerezler |
HttpOnly | JavaScript bunu document.cookie üzerinden okuyamaz; bu, XSS’e karşı koruma sağlar | Giriş oturumları ve sepetler |
SameSite=Lax veya Strict | Çerezin siteler arası isteklerde ne zaman gönderileceğini sınırlar | Oturumlar; Strict kimlik doğrulama ve sepet çerezlerine uygundur |
SameSite=None | Siteler arası isteklerde gönderilir; Secure ile birlikte kullanılmalıdır | Yalnızca buna ihtiyaç duyan gömülü üçüncü taraf özellikler |
SameSite özniteliği ayarlanmamışsa tarayıcılar çerezi Lax olarak ele alır. Kendi script’lerinizin okuması gereken çerezler HttpOnly olamaz; bu yüzden oturum açmış bir müşteriyi veya yöneticiyi tanımlayan çerezlere odaklanın.
curl -sI https://example.com/ | grep -i "^set-cookie"
Tarayıcı geliştirici araçları, sayfa yüklendikten sonra script’lerin ayarladığı çerezler de dahil olmak üzere aynı bilgileri gösterir.
Karma içeriği nasıl bulursunuz?
Karma içerik (mixed content), HTTPS üzerinden sunulan bir sayfada HTTP üzerinden yüklenen her türlü kaynaktır ve tarayıcı konsolu bunları listeler.
MDN (yeni sekmede açılır) bunu iki gruba ayırır. Görseller, ses ve video “yükseltilebilir” (upgradable) içeriktir: tarayıcılar bunları otomatik olarak HTTPS üzerinden ister. Script’ler, stil dosyaları, iframe’ler, yazı tipleri ve fetch() istekleri “engellenebilir” (blockable) içeriktir: tarayıcılar bunları engeller ve bu da onlara bağlı olan her şeyi bozar. Yalın bir IP adresine yapılan yükseltilmiş istekler de engellenir.
Bulmak için önemli şablonlarınızda (ana sayfa, koleksiyon, ürün, sepet) konsolu açın ve tema kodunuzda, sayfa içeriğinizde ve uygulama ayarlarınızda http:// araması yapın. Shopify’ın yardım merkezi, HTTPS üzerinden sunulmayan bir varlık (asset) içeren her mağaza sayfasının güvensiz kabul edildiğini (yeni sekmede açılır) belirtir ve varlıkların Shopify’da barındırılmasını veya HTTPS üzerinden sunulmasını önerir. WooCommerce’te site bir zamanlar http:// üzerinde çalıştıysa eski yazı içeriklerini ve tema seçeneklerini kontrol edin.
Bilinen CVE’leri olan eski JavaScript kütüphanelerini nasıl tespit edersiniz?
Her sayfanın yüklediği kütüphaneleri listeleyin, sürümlerini okuyun ve bunları National Vulnerability Database (NVD, ABD Ulusal Güvenlik Açığı Veritabanı) ile karşılaştırın.
jQuery ile başlayın. Tarayıcı konsolunda $.fn.jquery yüklü sürümü döndürür (jQuery API (yeni sekmede açılır)). İşaretlenmesi gereken sürümler:
| CVE | Etkilenen sürümler | Sorun | NVD puanı (v3.1) |
|---|---|---|---|
| CVE-2020-11022 (yeni sekmede açılır) | 1.12.0 ile 3.5.0 öncesi arası | Güvenilmeyen HTML’nin .html() veya .append() gibi yöntemlere aktarılması kod çalıştırabilir | 6,1 Orta |
| CVE-2020-11023 (yeni sekmede açılır) | 1.0.3 ile 3.5.0 öncesi arası | Aynı sorun, <option> öğeleri içeren HTML için; 23 Ocak 2025’ten beri CISA’nın KEV kataloğunda | 6,1 Orta |
| CVE-2019-11358 (yeni sekmede açılır) | 3.4.0 öncesi | jQuery.extend(true, ...) üzerinden prototip kirliliği (prototype pollution) | 6,1 Orta |
2020 tarihli iki sorun da jQuery 3.5.0’da düzeltildi. Açık içeren bir sürüm, hatalı kodun sitede bulunduğu anlamına gelir; istismar edilip edilemeyeceği, sitenin bu koda veriyi nasıl aktardığına bağlıdır. WordPress 5.6 sürümünden beri (yeni sekmede açılır) jQuery 3.5.1 ile birlikte geliyor; bu yüzden bir WooCommerce mağazasındaki eski bir jQuery, güncel olmayan bir WordPress’e ya da kendi kopyasını yükleyen bir temaya veya eklentiye işaret eder. Shopify’da tema dosyalarınızı ve script ekleyen uygulamaları kontrol edin.
security.txt nedir ve mağazanızın buna ihtiyacı var mı?
Güvenlik araştırmacılarına bir güvenlik açığını size nasıl bildirebileceklerini anlatan düz metin bir dosyadır.
RFC 9116 (yeni sekmede açılır) (Nisan 2022), bilgilendirme amaçlı (Informational) bir RFC’dir; bu yüzden ona uymak isteğe bağlıdır. RFC’ye göre dosya HTTPS üzerinden /.well-known/security.txt adresinde text/plain olarak sunulmalıdır. Contact ve Expires alanları zorunludur ve RFC, Expires tarihinin bir yıldan daha yakın bir tarih olmasını önerir.
Contact: mailto:security@example.com
Expires: 2027-09-30T23:00:00.000Z
Preferred-Languages: en
Policy: https://example.com/security-policy
WooCommerce’te dosyayı sunucunuza yerleştirebilirsiniz. Barındırılan (hosted) bir platformda o yolda bir dosya yayımlayıp yayımlayamayacağınızı kontrol edin; yayımlayamıyorsanız iletişim sayfanızda açıkça belirtilmiş bir güvenlik iletişim adresi de işe yarar.
DMARC mağazanızı e-posta sahteciliğine karşı nasıl korur?
DMARC, From (Kimden) adresinde alan adınızı kullanan ancak hizalı SPF veya DKIM doğrulamasından geçemeyen e-postaları karantinaya almalarını veya reddetmelerini e-posta sağlayıcılarından istemenizi sağlar.
p=none politikasına sahip bir kayıt yalnızca rapor toplar; sahte e-postaları durdurmaz. Müşteriler sipariş onaylarının ve parola sıfırlama e-postalarının sizin alan adınızdan gelmesini bekler; bu yüzden tam olarak sizin alan adınızı gösteren bir oltalama (phishing) mesajını engellemeye değer. Politikanızı dig +short TXT _dmarc.example.com komutuyla kontrol edin; spesifikasyon için RFC 9989 (yeni sekmede açılır) belgesine bakın. DMARC benzer görünen (lookalike) alan adlarını kapsamaz, yalnızca kaydı yayımlayan alan adını kapsar.
Shopify neleri yönetir, WooCommerce’te neleri siz kontrol edersiniz?
Shopify vitrinlerinin arkasındaki sunucuları kendisi işletir; kendi sunucunuzda barındırdığınız (self-hosted) bir WooCommerce mağazasında ise sunucu ayarları size ve hosting sağlayıcınıza kalır.
| Kontrol | Shopify | WooCommerce (kendi sunucunuzda) |
|---|---|---|
| TLS sertifikası | Shopify’a eklenen tüm alan adları için ücretsiz (yeni sekmede açılır); üçüncü taraf alan adlarında 48 saate kadar sürebilir | Hosting sağlayıcınız veya kendi kurulumunuz |
| HTTP’den HTTPS’e yönlendirme | Platform | Web sunucusu, CDN veya hosting ayarları |
| Güvenlik başlıkları | Shopify’ın sunucuları gönderir | Web sunucusu, CDN veya bir eklenti |
| Çerez bayrakları | Shopify’ın kendi çerezlerini platform ayarlar; uygulama ve tema çerezleri sizin sorumluluğunuzdadır | WordPress çekirdeği, eklentiler ve sunucu |
| Karma içerik ve JS kütüphaneleri | Temanız, içeriğiniz ve uygulamalarınız | Temanız, içeriğiniz ve eklentileriniz |
| security.txt ve DMARC | Alan adınız ve DNS’iniz | Alan adınız ve DNS’iniz |
Ekim 2026’da Shopify’da barındırılan birkaç vitrini kontrol ettiğimizde yanıtlarında yaklaşık 91 günlük max-age değerine sahip HSTS, X-Content-Type-Options: nosniff ve upgrade-insecure-requests içeren bir CSP vardı; frame-ancestors ise mağazadan mağazaya farklıydı. Shopify, Level 1 PCI DSS uyumlu olarak sertifikalı (yeni sekmede açılır) olduğunu belirtiyor. Temanız ve yüklediğiniz uygulamalar ise sizin sorumluluğunuzda kalır.
WooCommerce tarafında WordPress’in güçlendirme (hardening) rehberi (yeni sekmede açılır), WordPress’i ve eklentileri güncel tutmayı, kullanmadığınız eklentileri silmeyi ve hosting sağlayıcınıza hangi güvenlik önlemlerini aldığını sormayı önerir.
Bu neden bir sızma testi değildir?
Sızma testi aktif olarak saldırı girişiminde bulunur; pasif kontroller ise yalnızca gözlemler.
NIST SP 800-115, sızma testini, değerlendiricilerin bir sistemin güvenlik özelliklerini aşmanın yollarını bulmak için gerçek dünyadaki saldırıları taklit ettiği güvenlik testi olarak tanımlar (NIST sözlüğü (yeni sekmede açılır)). Pasif kontroller; eklentilerdeki sunucu tarafı açıkları, zayıf veya tekrar kullanılan yönetici parolalarını, eksik iki faktörlü kimlik doğrulamayı, bozuk erişim denetimini ya da sayfa kaynağında hiç görünmeyen savunmasız kodu göremez. Bunları istediğiniz zaman tekrarlayabileceğiniz bir başlangıç çizgisi olarak kullanın. Daha derin bir güvence için, sahibi olduğunuz veya test etme yetkiniz bulunan sistemlerde, kapsamı yazılı olarak belirlenmiş bir sızma testi yaptırın.
Ücretsiz tarama, mağazanız üzerinde ilk bir kontrol turu yapar. Web Sitesi Güvenlik Raporu, TLS ve yönlendirmelerden başlıklara, çerezlere, karma içeriğe, eski kütüphanelere, security.txt dosyasına ve DMARC’a kadar bu makaledeki pasif kontrolleri kapsar ve her bulgu için çözüm sunar. Her pasif inceleme gibi, bir mağazanın güvenli olduğunu garanti edemez.
Sık sorulan sorular
Pasif güvenlik kontrolleri mağazamı riske atar mı?
Normal bir ziyaretten daha fazla değil. Bu kontroller, herhangi bir tarayıcının veya e-posta sunucusunun isteyeceği herkese açık sayfaları ve DNS kayıtlarını ister; giriş yapmaya veya saldırı yükü göndermeye çalışmaz.
Shopify’da güvenlik başlıkları ekleyebilir miyim?
Vitrin yanıt başlıkları Shopify’ın sunucularından gelir; ihtiyacınız olan bir başlık eksikse Shopify Destek ile iletişime geçin. Temanızdaki bir CSP <meta> etiketi bazı yönergeler ekleyebilir, ancak MDN, frame-ancestors yönergesinin <meta> içinde desteklenmediğini belirtir.
Eski bir jQuery sürümü mağazamın hacklendiği anlamına mı gelir?
Hayır. Bilinen güvenlik açıkları olan kodun yüklendiği anlamına gelir; site, etkilenen yöntemlere güvenilmeyen HTML aktarıyorsa bu durum riski artırır. jQuery’yi güncelleyin veya onu yükleyen temayı ya da eklentiyi kaldırın.
Bir TLS sertifikası artık en fazla ne kadar süre geçerli olabilir?
15 Mart 2026’dan itibaren düzenlenen, herkesçe güvenilen sertifikalar en fazla 200 gün geçerli olabilir. Bu sınır 15 Mart 2027’den itibaren 100 güne, 15 Mart 2029’dan itibaren 47 güne düşer.
security.txt dosyası zorunlu mu?
RFC 9116 bilgilendirme amaçlı (Informational) bir RFC’dir; bu yüzden standarda göre dosyayı yayımlamak isteğe bağlıdır. Yayımlaması zahmetsizdir ve araştırmacılara size ulaşmaları için net bir yol sunar.
Temiz bir pasif tarama sonucu mağazamın güvenli olduğu anlamına mı gelir?
Hayır. Yalnızca herkese açık yapılandırmanın doğru göründüğünü gösterir. Sunucu tarafı açıklar, hesap güvenliği ve iş mantığı hataları başka testler gerektirir.
Kaynaklar
- Baseline Requirements for the Issuance and Management of Publicly-Trusted TLS Server Certificates, version 2.3.1 (yeni sekmede açılır), CA/Browser Forum, 4 Ekim 2026
- Ballot SC-081v3: Introduce Schedule of Reducing Validity and Data Reuse Periods (yeni sekmede açılır), CA/Browser Forum, 11 Nisan 2025
- Strict-Transport-Security (yeni sekmede açılır), MDN Web Docs, son değişiklik 11 Eylül 2026
- CSP: frame-ancestors (yeni sekmede açılır), MDN Web Docs, son değişiklik 27 Ağustos 2026
- X-Content-Type-Options (yeni sekmede açılır), MDN Web Docs, son değişiklik 17 Mart 2026
- Using HTTP cookies (yeni sekmede açılır), MDN Web Docs, son değişiklik 17 Eylül 2026
- Mixed content (yeni sekmede açılır), MDN Web Docs, son değişiklik 15 Ağustos 2026
- HTTP Security Response Headers Cheat Sheet (yeni sekmede açılır), OWASP Cheat Sheet Series, erişim tarihi 22 Ekim 2026
- CVE-2020-11022 (yeni sekmede açılır), NIST National Vulnerability Database, yayın tarihi 29 Nisan 2020
- CVE-2020-11023 (yeni sekmede açılır), NIST National Vulnerability Database, yayın tarihi 29 Nisan 2020
- CVE-2019-11358 (yeni sekmede açılır), NIST National Vulnerability Database, yayın tarihi 20 Nisan 2019
- .jquery (yeni sekmede açılır), jQuery API Documentation, erişim tarihi 22 Ekim 2026
- Updating core jQuery to version 3, part 2 (yeni sekmede açılır), Make WordPress Core, 5 Kasım 2020
- RFC 9116: A File Format to Aid in Security Vulnerability Disclosure (yeni sekmede açılır), IETF, Nisan 2022
- RFC 9989: Domain-Based Message Authentication, Reporting, and Conformance (DMARC) (yeni sekmede açılır), IETF, Mayıs 2026
- Enabling secure connections to your Shopify store (yeni sekmede açılır), Shopify Yardım Merkezi, erişim tarihi 22 Ekim 2026
- Security (yeni sekmede açılır), Shopify, erişim tarihi 22 Ekim 2026
- Hardening WordPress (yeni sekmede açılır), WordPress Developer Resources, erişim tarihi 22 Ekim 2026
- Penetration testing (glossary) (yeni sekmede açılır), NIST Computer Security Resource Center, NIST SP 800-115’e (Eylül 2008) atıfla, erişim tarihi 22 Ekim 2026
Tüm rehberler
- ADA web sitesi ihtarnamesi mi aldınız? İlk kontrol etmeniz gerekenlerADA ihtarnamesi neyi iddia eder, WCAG'nin yeri, toplanacak belgeler, overlay'ler neden kodu düzeltmez, avukata ne zaman gidilir. Hukuki tavsiye değildir.
- Avrupa Erişilebilirlik Yasası (EAA) ve online mağazalar: Haziran 2025'ten bu yana neler geçerli?EAA, 28 Haziran 2025'ten beri AB tüketicilerine satış yapan online mağazaları kapsıyor. Kapsam, mikro işletme muafiyeti, EN 301 549, WCAG ve zorunlu bilgiler.
- FTC'nin accessiBe kararı: erişilebilirlik overlay'leri ve mağazanızFTC'nin 2025 kararı, WCAG uyumluluk iddiaları yüzünden accessiBe'ye 1 milyon dolar ödetti. Karar ne diyor, ne demiyor, overlay kullanan mağazalar ne yapmalı?