security.txt Dosyası Nedir? Web Sitesi Güvenlik Bildirimi Oluşturma Rehberi

security.txt Dosyası Nedir? Web Sitesi Güvenlik Bildirimi Oluşturma Rehberi

Günümüz dijital ekosisteminde web sitesi güvenliği, yalnızca sistem yöneticilerinin değil, siber güvenlik araştırmacılarının ve etik hacker'ların da ortak sorumluluk alanındadır. Web sitenizde zafiyet tespit eden bir güvenlik araştırmacısının sizinle iletişime geçmek için iletişim formu aramak zorunda kalması veya sosyal medya hesaplarınız üzerinden erişmeye çalışması hem zaman kaybına hem de kritik zafiyetlerin yanlış kişilere sızmasına neden olabilir. İşte tam bu noktada security.txt dosyası devreye girer.

IETF (Internet Engineering Task Force) tarafından RFC 9116 standardı olarak kabul edilen security.txt, güvenlik araştırmacılarının bir web sitesindeki güvenlik zafiyetlerini (vulnerability) doğrudan doğruya ilgili güvenlik ekibine bildirebilmesi için standart bir iletişim mekanizması sunar. Bu yazıda, web siteniz için RFC 9116 standartlarına uygun bir security.txt dosyasının nasıl oluşturulacağını, PGP anahtarı ile nasıl imzalanacağını ve farklı hosting altyapılarına nasıl entegre edileceğini adım adım inceleyeceğiz.

security.txt Dosyası Nedir ve Neden Önemlidir?

Bir web sitesinin kök dizininde veya belirlenmiş standart bir klasörde barındırılan security.txt dosyası, kuruluşların güvenlik politikalarını, iletişim kanallarını ve zafiyet bildirim süreçlerini makine tarafından okunabilir (machine-readable) ve insan tarafından anlaşılabilir formatta sunan metin belgesidir. Tıpkı arama motoru botlarına rehberlik eden robots.txt veya site haritasını belirten sitemap.xml gibi, security.txt de siber güvenlik camiasına yön gösterir.

Özellikle 2026 yılı itibarıyla modern web standartlarında, siber güvenlik şeffaflığı ve sorumluluk sahibi zafiyet ifşası (responsible disclosure) kurumlar için bir zorunluluk haline gelmiştir. Bu dosyanın web sitenizde bulunması şu temel avantajları sağlar:

  • Hızlı ve Doğrudan İletişim: Güvenlik araştırmacıları, tespit ettikleri açıkları doğrudan güvenlik veya siber olaylara müdahale ekibinize (CSIRT/CERT) iletebilir.
  • Sorumlu İfşa Süreçlerinin Yönetimi: Zafiyetlerin kamuoyuna açıklanmadan önce tarafınıza bildirilmesi için kuralları ve ödül programı (Bug Bounty) detaylarınızı netleştirir.
  • Yasal ve İtibar Riskinin Azaltılması: Güvenlik araştırmacılarına yasal çerçeve sunarak yetkisiz erişim davalarının önüne geçer ve markanızın siber güvenliğe verdiği önemi gösterir.
  • RFC 9116 Standardı: Temel Direktifler ve Kurallar

    RFC 9116 spesifikasyonuna göre security.txt dosyası UTF-8 karakter kodlamasıyla hazırlanmalı ve anahtar-değer (key-value) çiftleri içermelidir. Dosya içinde kullanılabilecek standart direktifler şunlardır:

    1. Contact (Zorunlu)

    Güvenlik ekibinizin iletişim bilgilerini içerir. E-posta adresi, telefon numarası veya zafiyet bildirim formu URL'si şeklinde tanımlanabilir. Birden fazla Contact satırı eklenebilir.

  • Contact: mailto:security@domain.com
  • Contact: https://domain.com/security-reporting
  • Contact: tel:+90-212-555-0100
  • 2. Expires (Zorunlu)

    Dosyanın geçerlilik süresinin dolduğu tarihi ve saati RFC 3339 formatında (ISO 8601 türevi) belirtir. Bu direktif, geçerliliğini yitirmiş iletişim bilgilerinin kullanılmasını engeller. Gelecekteki bir tarih tanımlanmalı ve dosya periyodik olarak güncellenmelidir.

  • Expires: 2027-01-01T00:00:00.000Z
  • 3. Encryption (İsteğe Bağlı)

    Güvenlik bildirimlerinin uçtan uca şifrelenerek gönderilmesi için kullanılan OpenPGP kamu anahtarının (Public Key) bağlantısını içerir.

  • Encryption: https://domain.com/.well-known/pgp-key.txt
  • 4. Canonical (İsteğe Bağlı)

    security.txt dosyasının orijinal dijital konumunu belirtir. Bu, dosyanın başka bir sunucuya kopyalanması veya kötü niyetli değiştirilmesi durumunda doğruluğunu kontrol etmeye yarar.

  • Canonical: https://domain.com/.well-known/security.txt
  • 5. Preferred-Languages (İsteğe Bağlı)

    Güvenlik ekibinizin hangi dillerde bildirimi kabul ettiğini virgülle ayrılmış ISO 639-1 dil kodları ile ifade eder.

  • Preferred-Languages: tr, en
  • 6. Policy ve Acknowledgments (İsteğe Bağlı)

    Policy, zafiyet bildirim politikanızın veya Bug Bounty kurallarınızın bulunduğu sayfanın linkidir. Acknowledgments ise web sitenize katkıda bulunan güvenlik araştırmacılarının (Hall of Fame) listelendiği bağlantıdır.

  • Policy: https://domain.com/security-policy
  • Acknowledgments: https://domain.com/hall-of-fame
  • 7. Hiring (İsteğe Bağlı)

    Siber güvenlik alanındaki açık iş ilanlarınızın yer aldığı kariyer sayfasını bağlamak için kullanılır.

  • Hiring: https://domain.com/careers/cyber-security
  • Adım Adım security.txt Dosyası Oluşturma

    Şimdi tüm bu direktifleri bir araya getirerek eksiksiz ve güvenli bir security.txt dosyası örneği oluşturalım.

    # WebTeknoloji Güvenlik Bildirimi Dosyası
    Contact: mailto:guvenlik@webteknoloji.net
    Contact: https://webteknoloji.net/iletisim
    Expires: 2027-08-01T00:00:00.000Z
    Encryption: https://webteknoloji.net/.well-known/pgp-key.txt
    Canonical: https://webteknoloji.net/.well-known/security.txt
    Preferred-Languages: tr, en
    Policy: https://webteknoloji.net/guvenlik-politikasi
    Acknowledgments: https://webteknoloji.net/tesekkur-edilenler
    

    PGP Anahtarı İle İmzalamak (OpenPGP Cleartext Signature)

    security.txt dosyasının üçüncü şahıslar tarafından manipüle edilmediğini kanıtlamak için OpenPGP ile imzalanması önerilir. GPG kullanarak metin dosyanızı aşağıdaki komutla imzalayabilirsiniz:

    gpg --clearsign security.txt
    

    Bu komut sonucunda security.txt.asc adında imzalı bir dosya oluşacaktır. Bu dosyanın içeriğini adını tekrar security.txt olarak değiştirerek sunucunuza yükleyebilirsiniz. İmzalı dosya şu yapıda görünecektir:

    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA512
    
    Contact: mailto:guvenlik@webteknoloji.net
    Expires: 2027-08-01T00:00:00.000Z
    Canonical: https://webteknoloji.net/.well-known/security.txt
    -----BEGIN PGP SIGNATURE-----
    
    iQIzBAEBCgAdFiEE...
    -----END PGP SIGNATURE-----
    

    security.txt Nereye ve Nasıl Yerleştirilir?

    RFC 9116 standardına göre dosya iki farklı konuma yerleştirilebilir, ancak birincil tercih edilen konum /.well-known/ dizinidir:

  • Birincil Konum (Önerilen): https://domain.com/.well-known/security.txt
  • İkincil Konum (Geriye Dönük Uyumluluk): https://domain.com/security.txt
  • Yönlendirme stratejisinde, kök dizindeki /security.txt adresine yapılan isteklerin /.well-known/security.txt adresine 301 veya 302 HTTP yönlendirmesi yapması ideal yaklaşımdır.

    Sunucu ve Altyapı Yapılandırmaları

    Dosyayı oluşturup doğru klasöre koyduktan sonra, web sunucunuzun bu dosyayı text/plain MIME türü ile ve UTF-8 karakter setiyle sunduğundan emin olmalısınız.

    Nginx Yapılandırması

    Nginx kullanıyorsanız, nginx.conf veya ilgili sanal konak (virtual host) dosyanıza şu blokları ekleyebilirsiniz:

    location /.well-known/security.txt {
        default_type text/plain;
        charset utf-8;
        add_header Access-Control-Allow-Origin "*";
    }
    
    # Kök dizinden well-known dizinine yönlendirme
    location = /security.txt {
        return 301 /.well-known/security.txt;
    }
    

    Apache (.htaccess) Yapılandırması

    Apache sunucularda .htaccess dosyası üzerinden MIME türü ve yönlendirme ayarı yapılabilir:

    <IfModule mod_mime.c>
        <Files "security.txt">
            AddType text/plain;charset=utf-8 .txt
        </Files>
    </IfModule>
    
    RewriteEngine On
    RewriteRule ^security\.txt$ /.well-known/security.txt [R=301,L]
    

    Modern Altyapılarda Entegrasyon (Jamstack & Docker)

    Statik site oluşturucuları veya modern mimariler kullanıyorsanız, sunucu taraflı ayarları build sürecine dahil etmeniz gerekir. Örneğin Jamstack Hosting Nedir? rehberimizde bahsettiğimiz gibi Gatsby, Next.js veya Hugo projelerinde dosyayı public/.well-known/security.txt yoluna koymanız yeterlidir. Proje derlendiğinde dosya doğrudan kök dizindeki .well-known klasörüne aktarılır.

    Konteyner mimarisi kullanıyorsanız, Docker Tabanlı Hosting Nedir? içeriğinde aktarılan Nginx imajı yapılandırmalarına benzer şekilde, COPY security.txt /usr/share/nginx/html/.well-known/security.txt komutuyla dosyayı imaj içerisine dahil edebilirsiniz.

    Sık Yapılan Hatalar ve Güvenlik Riskleri

  • Yanlış MIME Türü: Dosyanın text/html veya application/octet-stream olarak sunulması otomasyon tarayıcılarının dosyayı okumasını engeller. Mutlaka text/plain olmalıdır.
  • Son Kullanma Tarihinin (Expires) Geçmesi: Günü geçmiş bir Expires değeri, güvenlik araştırmacıları tarafından dosyanın terk edildiği şeklinde yorumlanır. Takviminize yıllık hatırlatıcı ekleyerek tarihi güncelleyin.
  • Kritik Gizli Bilgileri Dosyaya Yazmak: security.txt herkese açık bir dosyadır. Dosya içerisine dahili IP adresleri, sunucu bilgileri, kişisel cep telefonları veya geliştirici parolaları kesinlikle yazılmamalıdır.
  • HTTPS Zorunluluğunun İhlali: RFC 9116 uyarınca security.txt dosyası yalnızca HTTPS üzerinden sunulmalıdır. HTTP üzerinden sunulan bildirim dosyaları Man-in-the-Middle (MitM) saldırılarına açıktır.
Web sitenizdeki sunucu veya hosting altyapısında değişiklik yaparken, örneğin Sıfır Kesinti ile Web Sitesi Taşıma Rehberi adımlarını uygularken /.well-known/ klasörünün ve SSL sertifikası erişimlerinin eksiksiz aktarıldığından emin olmanız kritik önem taşır.

Doğrulama ve Test Adımları

Dosyanızı oluşturup yayına aldıktan sonra doğruluk kontrolü yapmak için securitytxt.org tarafından sağlanan ücretsiz online doğrulayıcı araçları kullanabilirsiniz. Ayrıca komut satırından curl ile HTTP başlıklarını ve içeriği test edebilirsiniz:

curl -i https://domain.com/.well-known/security.txt

Bu komutun çıktısında HTTP/2 200 durumu ile birlikte content-type: text/plain; charset=utf-8 başlığını görmeniz gerekir.

Sonuç

security.txt dosyası, web sitenizin siber güvenlik olgunluğunu gösteren küçük ama son derece etkili bir adımdır. Siber tehditlerin karmaşıklaştığı günümüzde, beyaz şapkalı araştırmacılara açık ve güvenli bir iletişim kanalı sunmak, olası güvenlik açıklarının kriz dönüşmeden çözülmesini sağlar.

Sonraki Adım Önerisi: Metin editörünüzü açın, RFC 9116 kurallarına uygun olarak kendi security.txt dosyanızı hazırlayın, Expires tarihini önümüzdeki yıla ayarlayın ve sunucunuzun /.well-known/ dizinine yükleyerek curl testi ile hemen doğrulayın.

Sıkça Sorulan Sorular

security.txt dosyası zorunlu mudur?
Yasal olarak tüm web siteleri için bir zorunluluk olmasa da RFC 9116 ile standartlaştırılmış uluslararası bir web güvenlik uygulamasıdır. Kamu kurumları, finans kuruluşları ve siber güvenliğe önem veren tüm yapılar için şiddetle tavsiye edilir.
security.txt dosyası nerede bulunmalıdır?
Dosya birincil olarak web sitenizin 'https://domain.com/.well-known/security.txt' dizininde bulunmalıdır. Geriye dönük uyumluluk sağlamak için kök dizindeki '/security.txt' adresinden buraya 301 yönlendirmesi yapılması önerilir.
Expires direktifi dolduğunda ne olur?
Expires tarihi geçtiğinde otomatik tarayıcılar ve güvenlik araştırmacıları dosyayı geçersiz (expired) kabul eder. Bu durum güvenlik bildirimlerinin aksamasına neden olabileceğinden tarihi yılda en az bir kez güncellemeniz gerekir.
security.txt dosyasına şahsi e-posta adresimi yazmalı mıyım?
Şahsi e-posta adresi yerine guvenlik@domain.com veya security@domain.com gibi kurumsal ve ekibin ortak erişebildiği bir e-posta adresi ya da doğrudan güvenlik bildirim formu bağlantısı yazmanız önerilir.
WxDigitals
WxDigitals

WebTeknoloji.net editör ekibi; web geliştirme, SEO, hosting ve yapay zeka alanlarında üretilen içeriklerin araştırma, test ve yayın süreçlerini yürütür. Tüm incelemeler gerçek kullanım deneyimine, karşılaştırmalar ise resmi dokümantasyon ve güncel fiyatlandırma sayfalarına dayanır.

Bu içeriği faydalı bulduysanız…

Haftalık teknoloji & SEO rehberlerimize katılın, 38 maddelik Teknik SEO Kontrol Listesi PDF'ini hediye olarak hemen indirin.

Yorumlar (0)

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Yorum Yazın