PHP ile bir web sitesi geliştirirken güvenliği artırmak için HTTP güvenlik başlıklarını (security headers) doğru bir şekilde yapılandırmak önemlidir. Bu başlıklar, tarayıcı ile sunucu arasındaki iletişimde belirli güvenlik politikalarını uygular ve web uygulamanızı potansiyel saldırılara karşı korur.
require-corp: Tüm gömülü kaynaklar, aynı domain'den olmalı ya da Cross-Origin-Resource-Policy başlığını desteklemelidir.
Örnek Uygulama
Bu güvenlik başlıkları, doğru bir şekilde yapılandırıldığında web sitenizi çeşitli saldırılara karşı daha güvenli hale getirir.
1. Content-Security-Policy (CSP)
Bu başlık, hangi kaynakların yüklenebileceğini belirler ve XSS (Cross-Site Scripting) saldırılarına karşı koruma sağlar.
Kod:
header("Content-Security-Policy: default-src 'self'; img-src 'self' https://example.com; script-src 'self' 'unsafe-inline'");
- default-src 'self': Tüm kaynakların yalnızca aynı domain'den yüklenmesini zorunlu kılar.
- img-src 'self' Example Domain: Görseller yalnızca aynı domain veya Example Domain üzerinden yüklenebilir.
- script-src 'self' 'unsafe-inline': JavaScript kaynaklarının kendi domain'den yüklenmesine izin verir ve inline script kullanımına izin verir (genellikle önerilmez).
2. Strict-Transport-Security (HSTS)
Bu başlık, tarayıcının yalnızca HTTPS üzerinden bağlantı kurmasını sağlar.
Kod:
header("Strict-Transport-Security: max-age=31536000; includeSubDomains; preload");
- max-age=31536000: HSTS politikasının 1 yıl (31536000 saniye) boyunca geçerli olmasını sağlar.
- includeSubDomains: Alt domainlerde de aynı politikayı uygular.
- preload: Siteyi HSTS preload listesine eklemek için kullanılır.
3. X-Frame-Options
Bu başlık, sitenizin başka bir sitede iframe içinde açılmasını engelleyerek clickjacking saldırılarına karşı koruma sağlar.
Kod:
header("X-Frame-Options: SAMEORIGIN");
- SAMEORIGIN: Siteniz yalnızca aynı domain'den iframe olarak yüklenebilir.
- DENY: Hiçbir iframe yüklemesine izin vermez.
4. X-Content-Type-Options
Bu başlık, tarayıcının MIME türlerini otomatik algılamasını engeller ve MIME türü uyuşmazlığı saldırılarına karşı koruma sağlar.
Kod:
header("X-Content-Type-Options: nosniff");
nosniff: Tarayıcıya, içerik türünü sadece sunucu tarafından belirtilen türde işlemesi gerektiğini belirtir.
5. Referrer-Policy
Bu başlık, yönlendirme (referrer) bilgilerini nasıl paylaşacağınızı kontrol eder.
Kod:
header("Referrer-Policy: no-referrer");
Kod:
header("Referrer-Policy: no-referrer");
- no-referrer: Yönlendirme bilgisi hiç gönderilmez.
- same-origin: Yönlendirme bilgisi yalnızca aynı domain için gönderilir.
- strict-origin-when-cross-origin: Yalnızca güvenli (HTTPS) yönlendirme bilgileri paylaşılır.
6. Cross-Origin-Embedder-Policy (COEP)
Bu başlık, sitenizin farklı domainlerden içerik yüklerken güvenliğini sağlar.
Kod:
header("Cross-Origin-Embedder-Policy: require-corp");
require-corp: Tüm gömülü kaynaklar, aynı domain'den olmalı ya da Cross-Origin-Resource-Policy başlığını desteklemelidir.
7. Cross-Origin-Resource-Policy (CORP)
Bu başlık, sitenizin başka domainlerden kaynak çekmesini kontrol eder.
Kod:
header("Cross-Origin-Resource-Policy: same-origin");
- same-origin: Yalnızca aynı domain kaynaklarına erişime izin verir.
- cross-origin: Farklı domainlerden erişime izin verir.
8.Expect-CT
Bu başlık, sitenizin SSL/TLS sertifikalarının doğru bir şekilde yapılandırıldığını kontrol eder.
Kod:
header("Expect-CT: max-age=86400, enforce, report-uri='https://example.com/report'");
- max-age=86400: Politikanın 1 gün geçerli olmasını sağlar.
- enforce: Bu başlığın zorunlu olarak uygulanmasını sağlar.
- report-uri: Rapor gönderilecek URL.
Örnek Uygulama
PHP:
<?php
header("Content-Security-Policy: default-src 'self'");
header("Strict-Transport-Security: max-age=31536000; includeSubDomains; preload");
header("X-Frame-Options: SAMEORIGIN");
header("X-Content-Type-Options: nosniff");
header("Referrer-Policy: no-referrer");
header("Cross-Origin-Embedder-Policy: require-corp");
header("Cross-Origin-Opener-Policy: same-origin");
header("Cross-Origin-Resource-Policy: same-origin");
header("Expect-CT: max-age=86400, enforce, report-uri='https://example.com/report'");
?>
Bu güvenlik başlıkları, doğru bir şekilde yapılandırıldığında web sitenizi çeşitli saldırılara karşı daha güvenli hale getirir.


