Belajar Traefik - Headers & Security Middlewares
Episode 10 of 31

Belajar Traefik - Headers & Security Middlewares

Episode ini membahas middleware headers Traefik: custom headers untuk request dan response, rangkaian security headers seperti Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, dan Referrer-Policy, konfigurasi CORS lengkap dengan preflight, serta pengaturan HSTS untuk memaksa HTTPS.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Header HTTP adalah bahasa siluman antara browser dan server. Middleware headers Traefik memberi kalian kendali penuh atas bahasa itu: menambah, menghapus, atau mengganti header di jalur request dan response. Episode 10 membahas middleware ini secara menyeluruh, ditambah dua tema besar: rangkaian security headers dan CORS.

Kenapa ini penting? Banyak serangan web klasik — clickjacking, MIME sniffing, XSS berbasis CSP — dicegah bukan oleh aplikasi, melainkan oleh header yang benar. Memasang security headers di Traefik berarti semua layanan di belakangnya terlindungi sekaligus, tanpa mengubah satu baris kode aplikasi. Inilah nilai proxy sebagai titik kendali terpusat.

Middleware Headers

Custom Headers Request dan Response

Middleware headers punya empat kelompok opsi: customRequestHeaders, customResponseHeaders, serta opsi untuk menghapus keduanya. Konfigurasi middleware headers selalu berada di bawah bagian http.middlewares:

Middleware headers dengan custom headers
http:
  middlewares:
    app-headers:
      headers:
        customRequestHeaders:
          X-Source: "traefik-edge"
        customResponseHeaders:
          X-Powered-By: "Backend Cluster"
          Cache-Control: "no-store"
        customRequestHeadersRegex:
          X-User-{name}: "{value}"
  • customRequestHeaders: ditambahkan ke request sebelum diteruskan ke backend — berguna untuk menandai asal trafik atau menambahkan header yang dibutuhkan backend.
  • customResponseHeaders: ditambahkan ke response sebelum dikirim ke klien.
  • Varian Regex memungkinkan template dinamis dengan capture group dari request.

Browser XSS Filter dan Content Type Sniffing

Dua perlindungan lama tapi masih berguna diaktifkan lewat opsi khusus:

XSS filter dan nosniff
http:
  middlewares:
    old-school-protect:
      headers:
        customResponseHeaders:
          X-XSS-Protection: "1; mode=block"
          X-Content-Type-Options: "nosniff"

X-Content-Type-Options: nosniff melarang browser menebak-nebak content type (MIME sniffing) — pencegahan penting untuk serangan berbasis file upload.

Security Headers

Standar Modern

Rangkaian security headers modern yang direkomendasikan untuk hampir semua layanan web:

Rangkaian security headers lengkap
http:
  middlewares:
    secure:
      headers:
        contentSecurityPolicy: "default-src 'self'; frame-ancestors 'none'"
        frameDeny: true
        contentTypeNosniff: true
        browserXssFilter: true
        referrerPolicy: "no-referrer"
        permissionsPolicy: "camera=(), microphone=(), geolocation=()"
        forceSTSHeader: true
        stsSeconds: 31536000
        stsIncludeSubdomains: true
        stsPreload: true
  • Content-Security-Policy: daftar sumber yang diizinkan memuat konten — pertahanan utama XSS. Atur default-src 'self' lalu longgarkan sesuai kebutuhan aplikasi.
  • X-Frame-Options / frameDeny: mencegah situs kalian ditampilkan dalam iframe situs lain (anti clickjacking).
  • X-Content-Type-Options: mencegah MIME sniffing.
  • Referrer-Policy: mengontrol informasi URL yang dikirim saat navigasi keluar.
  • Permissions-Policy: membatasi fitur browser seperti kamera, mikrofon, dan geolocation.

Untuk aplikasi yang tidak memakai header ini sama sekali, menempelkan middleware di atas di setiap router sudah meningkatkan postur keamanan secara signifikan. Pengaturan CSP yang terlalu ketat bisa memecah aplikasi — uji di staging dulu.

CORS Middleware

Mengizinkan Origin Lintas Situs

CORS (Cross-Origin Resource Sharing) mengatur apakah browser boleh memanggil API kalian dari domain lain. Middleware cors di Traefik mengonfigurasi ini secara terpusat:

Middleware CORS untuk API
http:
  middlewares:
    api-cors:
      headers:
        accessControlAllowOriginList:
          - "https://app.example.com"
          - "https://staging.example.com"
        accessControlAllowMethods:
          - GET
          - POST
          - OPTIONS
        accessControlAllowHeaders:
          - Content-Type
          - Authorization
        accessControlAllowCredentials: true
        accessControlMaxAge: 3600
  • accessControlAllowOriginList: daftar origin yang diizinkan — jangan pernah memakai wildcard bersama credentials.
  • accessControlAllowMethods: method yang diizinkan.
  • accessControlAllowHeaders: header yang boleh dikirim request lintas origin.
  • accessControlAllowCredentials: true: mengizinkan cookie lintas origin.
  • accessControlMaxAge: berapa lama hasil preflight di-cache browser.

Preflight Handling

Untuk request kompleks, browser mengirim request preflight OPTIONS terlebih dahulu. Traefik menangani preflight secara otomatis ketika middleware CORS aktif: jika method dan header cocok dengan konfigurasi, Traefik membalas 204 tanpa meneruskan request ke backend. Ini menghemat beban backend dan mempercepat respons browser.

HSTS

Memaksa HTTPS di Browser

HSTS (HTTP Strict Transport Security) memberi tahu browser: "mulai sekarang, hanya akses situs ini lewat HTTPS". Ini mencegah serangan downgrade dan SSL stripping. Konfigurasinya sudah terlihat di bagian security headers: stsSeconds adalah durasi kebijakan dalam detik, stsIncludeSubdomains memperluas ke semua subdomain, dan stsPreload mendaftarkan domain ke preload list browser.

Aturan penerapan HSTS yang benar:

  • Mulai dengan stsSeconds kecil, misalnya 300 detik, untuk pengujian.
  • Pastikan HTTPS berfungsi penuh sebelum menaikkan ke 31536000 detik.
  • Baru aktifkan stsPreload setelah yakin — pencabutan dari preload list sangat sulit.

Penutup

Inti yang harus dibawa pulang:

  • Middleware headers mengelola custom headers request dan response.
  • Security headers: CSP, frameDeny, nosniff, referrerPolicy, permissionsPolicy.
  • CORS dikonfigurasi terpusat, lengkap dengan preflight otomatis.
  • HSTS memaksa HTTPS; mulai dari durasi kecil lalu tingkatkan bertahap.
  • Header diterapkan sekali di Traefik, melindungi semua backend sekaligus.
  • Jangan pakai wildcard origin bersamaan dengan credentials.

Di episode 11 selanjutnya kita akan membahas path & request middlewares — AddPrefix, StripPrefix, ReplacePath, ReplacePathRegex, RedirectScheme untuk memaksa HTTPS, dan RedirectRegex untuk pengalihan berbasis pola. Middleware inilah yang menyelaraskan URL publik dengan struktur internal aplikasi.

Belajar Traefik - Headers & Security Middlewares | Belajar Traefik