Skip to content

Security Headers (Güvenlik Başlıkları)

Genel Bakış

Güvenlik başlıkları, web uygulamalarının güvenliğini artırmak için kullanılan HTTP yanıt başlıklarıdır. Bu başlıklar, tarayıcıların uygulamayı nasıl işleyeceğini ve hangi güvenlik politikalarını uygulayacağını belirler.

Temel Kavramlar

1. Content Security Policy (CSP)

public class SecurityHeadersMiddleware
{
    private readonly RequestDelegate _next;
    private readonly ILogger<SecurityHeadersMiddleware> _logger;

    public SecurityHeadersMiddleware(RequestDelegate next, ILogger<SecurityHeadersMiddleware> logger)
    {
        _next = next;
        _logger = logger;
    }

    public async Task InvokeAsync(HttpContext context)
    {
        // CSP başlığı ekle
        context.Response.Headers.Add("Content-Security-Policy", 
            "default-src 'self'; " +
            "script-src 'self' 'unsafe-inline' 'unsafe-eval'; " +
            "style-src 'self' 'unsafe-inline'; " +
            "img-src 'self' data:; " +
            "font-src 'self'; " +
            "connect-src 'self'; " +
            "frame-ancestors 'none'; " +
            "form-action 'self'; " +
            "base-uri 'self'; " +
            "object-src 'none'");

        await _next(context);
    }
}

2. HTTP Strict Transport Security (HSTS)

public class HstsMiddleware
{
    private readonly RequestDelegate _next;
    private readonly ILogger<HstsMiddleware> _logger;

    public HstsMiddleware(RequestDelegate next, ILogger<HstsMiddleware> logger)
    {
        _next = next;
        _logger = logger;
    }

    public async Task InvokeAsync(HttpContext context)
    {
        if (context.Request.IsHttps)
        {
            // HSTS başlığı ekle
            context.Response.Headers.Add("Strict-Transport-Security", 
                "max-age=31536000; includeSubDomains; preload");
        }

        await _next(context);
    }
}

3. X-Frame-Options ve X-Content-Type-Options

public class FrameOptionsMiddleware
{
    private readonly RequestDelegate _next;
    private readonly ILogger<FrameOptionsMiddleware> _logger;

    public FrameOptionsMiddleware(RequestDelegate next, ILogger<FrameOptionsMiddleware> logger)
    {
        _next = next;
        _logger = logger;
    }

    public async Task InvokeAsync(HttpContext context)
    {
        // X-Frame-Options başlığı ekle
        context.Response.Headers.Add("X-Frame-Options", "DENY");

        // X-Content-Type-Options başlığı ekle
        context.Response.Headers.Add("X-Content-Type-Options", "nosniff");

        await _next(context);
    }
}

4. Referrer Policy ve Permissions Policy

public class ReferrerPolicyMiddleware
{
    private readonly RequestDelegate _next;
    private readonly ILogger<ReferrerPolicyMiddleware> _logger;

    public ReferrerPolicyMiddleware(RequestDelegate next, ILogger<ReferrerPolicyMiddleware> logger)
    {
        _next = next;
        _logger = logger;
    }

    public async Task InvokeAsync(HttpContext context)
    {
        // Referrer-Policy başlığı ekle
        context.Response.Headers.Add("Referrer-Policy", "strict-origin-when-cross-origin");

        // Permissions-Policy başlığı ekle
        context.Response.Headers.Add("Permissions-Policy", 
            "geolocation=(), " +
            "microphone=(), " +
            "camera=(), " +
            "payment=(), " +
            "usb=()");

        await _next(context);
    }
}

Best Practices

1. Başlık Konfigürasyonu

  • CSP politikaları
  • HSTS ayarları
  • Frame seçenekleri
  • İçerik türü seçenekleri
  • Referrer politikaları

2. Güvenlik Politikaları

  • Kaynak kısıtlamaları
  • İçerik güvenliği
  • Çerçeve koruması
  • MIME türü koruması
  • İzin politikaları

3. Tarayıcı Uyumluluğu

  • Tarayıcı desteği
  • Geriye dönük uyumluluk
  • Politika uygulaması
  • Hata yönetimi
  • Test stratejisi

Sık Sorulan Sorular

1. Güvenlik başlıkları neden önemlidir?

  • XSS koruması
  • Clickjacking koruması
  • MIME türü koruması
  • Referrer bilgisi koruması
  • SSL/TLS zorunluluğu

2. Güvenlik başlıkları nasıl yapılandırılır?

  • CSP politikaları
  • HSTS ayarları
  • Frame seçenekleri
  • İçerik türü seçenekleri
  • Referrer politikaları

3. Güvenlik başlıkları zorlukları nelerdir?

  • Politika karmaşıklığı
  • Tarayıcı uyumluluğu
  • Performans etkisi
  • Hata ayıklama
  • Test zorlukları

Kaynaklar