HTTP Headers
HTTP headers adalah bagian inti dari permintaan dan respons HTTP. Mereka mengirimkan informasi tambahan dengan permintaan atau respons HTTP (misalnya, browser klien, halaman yang diminta, server, dan lainnya).
Header utama yang digunakan dengan environment untuk melakukan deployment aplikasi Anda:
Header | Deskripsi | Nilai |
---|---|---|
host | Menentukan host dan nomor port dari sumber daya (server) yang diminta. | {envName}.{platformDomain} |
x-forwarded-proto | Mengidentifikasi protokol (HTTP atau HTTPS) yang terhubung ke proxy atau load balancer Anda. | http/https |
x-forwarded-for | Mengidentifikasi alamat IP asal dari klien yang terhubung ke server web melalui proxy HTTP atau load balancer. | xx.xx.xx.xx, xx.xx.xx.xx |
Rantai IP atau rantai IPs (jika permintaan melewati beberapa proxy) | ||
x-real-ip | Alamat IP akhir dalam rantai x-forwarded-for, yaitu proxy terbaru dari klien yang terhubung ke server web. | xx.xx.xx.xx |
alamat IP paling kanan dalam x-forwarded-for | ||
x-host | Nama domain asal dari server (untuk virtual hosting) dan opsional nomor port TCP. | {envName}.{platformDomain} |
x-uri | Mengidentifikasi nama atau sumber daya web. | / |
Header keamanan tambahan digunakan untuk beberapa stack tertentu.
Daftar header HTTP yang didukung dapat bervariasi berdasarkan topologi dari environment yang terhubung. Karena spesifikasi akses eksternal (melalui resolver/SLB atau public IP), ada empat kemungkinan skenario ketika bekerja dengan platform:
Topologi | Skema | Header yang Didukung |
---|---|---|
Single application server | _host | |
x-forwarded-proto | ||
x-real-ip | ||
x-forwarded-for | ||
x-host_ | ||
Load balancer dengan application servers | _host | |
x-real-ip | ||
x-host | ||
x-forwarded-for | ||
x-uri | ||
x-forwarded-proto_ | ||
Application server dengan public IP | host | |
Load balancer dengan public IP dan application servers | _host | |
x-real-ip | ||
x-host | ||
x-forwarded-for | ||
x-uri | ||
x-forwarded-proto_ |
Security Headers
Anda dapat dengan mudah mengelola security headers dengan mengelola file konfigurasi yang sesuai. Path-nya berbeda untuk setiap server:
- Apache (PHP, Ruby, Python), MySQL, MariaDB : /etc/httpd/conf.d/10-shared_headers.conf
- NGINX (PHP, Ruby) dan LEMP : /etc/nginx/conf.d/headers/10-shared_headers.conf
- LiteSpeed, LLSMP : /var/www/conf/vhconf.xml (hanya dapat disesuaikan melalui panel admin)
- Tomcat, TomEE : /opt/tomcat/conf/web.xml
Catatan:
- Pemrosesan headers untuk server Node.js, Golang, .NET, JavaEngine, dan Springboot harus diimplementasikan secara manual dalam aplikasi pengguna.
- Untuk stack Tomcat dan TomEE, hanya header berikut yang diaktifkan secara default: X-Content-Type-Options, X-Frame-Options, X-XSS-Protection, dan Strict-Transport-Security (untuk SSL). Header lain dapat diaktifkan secara manual, jika diperlukan.
Jangan lupa untuk restart server Anda untuk menerapkan perubahan apa pun yang dilakukan pada file konfigurasi.
Header HTTP tambahan berikut digunakan secara default pada stack yang tercantum di atas:
Header | Deskripsi | Nilai |
---|---|---|
Cross-Origin-Embedder-Policy | Memungkinkan server untuk mendeklarasikan kebijakan penyematan untuk dokumen tertentu. | unsafe-none; |
Cross-Origin-Opener-Policy | Mencegah domain lain membuka/mengontrol jendela. | same-origin-allow-popups |
Cross-Origin-Resource-Policy | Mencegah domain lain membaca respons sumber daya yang diterapkan dengan header ini. | same-origin |
Content-Security-Policy | Mengontrol sumber daya yang diizinkan agen pengguna untuk dimuat untuk halaman tertentu. Nonaktif secara default. | frame-ancestors ‘self’; frame-src ‘self’; |
Expect-CT (hanya dengan SSL diaktifkan) | Memungkinkan situs untuk menerapkan persyaratan Certificate Transparency, yang mencegah penggunaan sertifikat yang diterbitkan secara salah untuk situs tersebut (yaitu, memerlukan bahwa setiap sertifikat untuk situs tersebut muncul dalam log CT publik). | max-age=3600, enforce |
Permissions-Policy | Menyediakan mekanisme untuk mengizinkan dan menolak penggunaan fitur browser dalam bingkai dan iframe yang disematkan. | _payment=(self) |
geolocation=(self)_ | ||
Strict-Transport-Security (hanya dengan SSL diaktifkan) | Memaksa komunikasi menggunakan HTTPS daripada HTTP. | max-age=5; includeSubDomains |
X-Content-Type-Options | Menonaktifkan MIME sniffing dan memaksa browser menggunakan tipe yang diberikan dalam Content-Type. | nosniff |
X-Frame-Options | Menunjukkan apakah browser harus diizinkan untuk menampilkan halaman dalam < frame>, < iframe>, < embed>, atau < object>. | SAMEORIGIN |
X-Permitted-Cross-Domain-Policies | Menentukan apakah file kebijakan lintas domain (crossdomain.xml) diizinkan. File tersebut dapat mendefinisikan kebijakan untuk mengizinkan klien menangani data lintas domain yang sebaliknya akan dibatasi karena Same-Origin Policy. | none |
Referrer-Policy | Mengontrol berapa banyak informasi referrer (dikirim melalui header Referer) yang harus disertakan dalam permintaan. | strict-origin-when-cross-origin (default) |
X-XSS-Protection | Mengaktifkan pemfilteran cross-site scripting. | 1; mode=block |