Security Headers, web uygulama güvenliğini artırmak için kritik bir rol oynar. Çeşitli saldırılara karşı koruma sağlamak, veri güvenliğini artırmak, tarayıcı güvenliğini sağlamak, izinleri yönetmek ve güvenlik standartlarını sağlamak gibi birçok avantaj sunarlar.
Bu başlıklar, modern web güvenliği stratejilerinin vazgeçilmez bir parçasıdır ve uygulamaların güvenlik açıklarını minimize etmeye yardımcı olur. Güvenlik başlıklarının doğru ve etkili bir şekilde kullanılması, hem uygulama sahiplerinin hem de kullanıcıların güvenliğini sağlamada önemli bir adımdır.
Security Headers Kullanmanın Faydaları ;
- Content Security Policy (CSP):
Önemi: XSS (Cross-Site Scripting) saldırılarını önler. Bu tür saldırılar, saldırganların zararlı JavaScript kodlarını yükleyerek kullanıcı bilgilerini çalmasına veya web sitesinin işlevselliğini bozmasına neden olabilir.
Nasıl Çalışır: CSP, hangi kaynakların (örneğin, script, style, img) yüklenebileceğini belirler ve sadece güvenilir kaynaklardan içerik yüklenmesini sağlar.
Örnek : Content-Security-Policy: default-src ‘self’; script-src ‘self’ https://trustedscripts.example.com; style-src ‘self’ https://trustedstyles.example.com
- Özel Parametreler
‘self’: Aynı orijinden gelen kaynaklara izin verir.
‘none’: Hiçbir kaynağa izin vermez.
‘unsafe-inline’: Inline JavaScript veya CSS’ye izin verir (güvenlik açısından önerilmez).
‘unsafe-eval’: JavaScript eval() gibi tehlikeli işlemlere izin verir (güvenlik açısından önerilmez).
data:: Veri URL’lerine izin verir (güvenlik açısından dikkatli kullanılmalıdır).
URL’ler: Belirtilen URL’lerden gelen kaynaklara izin verir.
Nonce tabanlı: script-src ‘nonce-<base64-value>’ gibi, belirli bir nonce değeri ile işaretlenmiş kaynaklara izin verir.
Hash tabanlı: script-src ‘sha256-<base64-value>’ gibi, belirli bir hash değeri ile işaretlenmiş kaynaklara izin verir.
Uygulama türüne güvenlik seviyesine göre farklı parametreler ile güçlendirilebilen yapıya sahiptir.
- Strict-Transport-Security (HSTS):
Önemi: Man-in-the-middle (MITM) saldırılarına karşı koruma sağlar. Bu saldırılar, kullanıcı ve sunucu arasındaki iletişimi keserek veya değiştirerek gerçekleşir.
Nasıl Çalışır: Tarayıcılara, yalnızca HTTPS bağlantılarını kullanmalarını zorunlu kılar. HTTP üzerinden yapılan istekler otomatik olarak HTTPS’ye yönlendirilir.
Örnek : Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Bu başlık, tarayıcılara 1 yıl boyunca (31536000 saniye) yalnızca HTTPS üzerinden bağlantı kurmalarını belirtir ve alt alan adlarını da kapsar.
- X-Content-Type-Options:
Önemi: MIME type sniffing saldırılarını önler. Bu saldırılar, tarayıcının dosya türünü yanlış yorumlaması ve zararlı içeriklerin çalıştırılmasına neden olabilir.
Nasıl Çalışır: Tarayıcıya, belirli bir MIME türünde olmayan içerikleri çalıştırmamasını söyler (nosniff).
Örnek : X-Content-Type-Options: nosniff
Tek bir parametre alır bu parametre ile gerekli korumayı sağlar.
- X-Frame-Options:
Önemi: Clickjacking saldırılarını önler. Bu saldırılar, kullanıcıları aldatıcı bir şekilde tıklamalarını sağlamak için web sitelerinin başka bir sitenin çerçevesinde (iframe) yüklenmesini içerir.
Nasıl Çalışır: Sayfanın iframe içinde yüklenip yüklenemeyeceğini kontrol eder (DENY, SAMEORIGIN).
Örnek: X-Frame-Options: DENY veya X-Frame-Options: SAMEORIGIN
Genellikle DENY olarak kullanılır.Uygulama türüne göre uygun yapılandırma parametresi seçilmelidir.
- X-XSS-Protection:
Önemi: Tarayıcı tabanlı XSS koruma filtrelerini etkinleştirir ve XSS saldırılarına karşı bir ek koruma sağlar.
Nasıl Çalışır: XSS koruma filtresi devreye girer ve zararlı kod tespit edildiğinde sayfa yüklenmesini engeller (1; mode=block).
Örnek: X-XSS-Protection: 1; mode=block
Temel yapılandırma ile bile başarılı işler çıkarır.
- Referrer-Policy:
Önemi: Gizlilik ve güvenlik sağlar. Tarayıcı, HTTP başlıklarında referans bilgisi olarak hangi bilgilerin gönderileceğini belirler.
Nasıl Çalışır: Referans bilgilerini sınırlayarak hassas verilerin istem dışı paylaşımını engeller (no-referrer, origin).
Örnek: Referrer-Policy: no-referrer-when-downgrade
Bu başlık, sertifika şeffaflığı ihlallerini 86400 saniye (1 gün) boyunca rapor eder ve zorunlu kılar.
- Expect-CT:
Önemi: HTTPS sertifikalarının düzgün çalışmasını ve sertifika şeffaflığını (Certificate Transparency) doğrular.
Nasıl Çalışır: Sunucu sertifikasının uygun şekilde kaydedildiğini ve doğrulanabilir olduğunu kontrol eder.
Örnek: Expect-CT: max-age=86400, enforce, report-uri=”https://example.com/report”
Bu başlık, sertifika şeffaflığı ihlallerini 86400 saniye (1 gün) boyunca rapor eder ve zorunlu kılar.
- Permissions-Policy:
Önemi: Web sayfasının belirli tarayıcı özelliklerine ve cihaz API’lerine erişimini kontrol eder. Bu, kullanıcı gizliliği ve güvenliği açısından önemlidir.
Nasıl Çalışır: Belirli özelliklere (örneğin, geolocation, camera, microphone) erişimi kısıtlayarak kötü niyetli sitelerin bu özellikleri kötüye kullanmasını önler.
Örnek: Permissions-Policy: geolocation=(self “https://example.com”), microphone=()
Bu ayar, geolocation erişimini yalnızca belirli bir kaynaktan (https://example.com) ve kendi kaynağınızdan (self) izin verirken, mikrofon erişimini tamamen engeller.
Apache Üzerinde Yapılandırma
Apache sunucusunda bu başlıkları eklemek için .htaccess dosyasına veya sunucu yapılandırma dosyasına (httpd.conf) aşağıdaki direktifleri ekleyebilirsiniz:
Header set Content-Security-Policy “default-src ‘self’; script-src ‘self’ https://trustedscripts.example.com; style-src ‘self’ https://trustedstyles.example.com”
Header set Strict-Transport-Security “max-age=31536000; includeSubDomains; preload”
Header set X-Content-Type-Options “nosniff”
Header set X-Frame-Options “DENY”
Header set X-XSS-Protection “1; mode=block”
Header set Referrer-Policy “no-referrer-when-downgrade”
Header set Expect-CT “max-age=86400, enforce, report-uri=https://example.com/report”
Header set Permissions-Policy “geolocation=(self https://example.com), microphone=()”
Nginx Üzerinde Yapılandırma
Nginx sunucusunda bu başlıkları eklemek için sunucu bloklarına aşağıdaki direktifleri ekleyebilirsiniz:
add_header Content-Security-Policy “default-src ‘self’; script-src ‘self’ https://trustedscripts.example.com; style-src ‘self’ https://trustedstyles.example.com”;
add_header Strict-Transport-Security “max-age=31536000; includeSubDomains; preload”;
add_header X-Content-Type-Options “nosniff”;
add_header X-Frame-Options “DENY”;
add_header X-XSS-Protection “1; mode=block”;
add_header Referrer-Policy “no-referrer-when-downgrade”;
add_header Expect-CT “max-age=86400, enforce, report-uri=https://example.com/report”;
add_header Permissions-Policy “geolocation=(self https://example.com), microphone=()”;
Bu başlıklar, web uygulamalarının güvenlik seviyesini artırarak hem kullanıcıların hem de uygulama sahiplerinin olası güvenlik tehditlerinden korunmasını sağlar. Uygulamalara ve kullanıcılara yönelik saldırılar, ciddi veri ihlallerine, mali kayıplara ve itibar zedelenmesine yol açabilir. Bu nedenle güvenlik başlıkları, modern web güvenliği uygulamalarında kritik bir rol oynar.
Eğer web uygulama güvenliği için bir waf (web application firewall) çözümü kullanıyorsanız bu güvenlik başlıklarını waf policy ile yapılandırarak uygulamalarınızı güvenle yayınlayabilirsiniz.
Yapılandırma, web uygulama güvenliği konusunda hizmet ve destek almak için bize ulaşabilirsiniz.