Mengenal security header pada HTTP/HTTPS

Bagi yang sudah beberapa lama belajar setting web server baik Apache, Nginx, Hiawatha, OpenLiteSpeed dan sebagainya pasti pernah tahu bahwa dalam protokol HTTP/HTTPS kita bisa menambahkan kode untuk headernya. Fungsinya kadang cuma informasi dan lainnya bisa jadi instruksi kepada browser harus diapakan kontennya.

Nah… kali ini saya akan mengenalkan dan membahas secara singkat beberapa header dengan jenis keamanan yang mungkin cocok diterapkan pada website anda. Ingat ya, sifatnya opsional dan pahami dulu manfaatnya apa baru dipasangkan. 🙂

  • Content-Security-Policy
    Bertugas melindungi situs dari serangan XSS (Cross-Site Scripting). Memanfaatkan sistem whitelist yang hanya akan memuat konten dari lokasi yang aman sehingga yang berbahaya otomatis diblokir.
  • X-Frame-Options
    Opsi ini menginstruksikan ke browser apakah halaman situsnya boleh disisipkan dalam rma atau tidak. Sering sekali dibuat injeksi iklan oleh ISP atau operator seluler, dan ada resiko clickjacking. Rekomendasi: x-frame-options: SAMEORIGIN.
  • X-XSS-Protection
    Mengatur konfigurasi filter proteksi cross-site scripting yang biasanya sudah ada dalam browser. Rekomendasi: X-XSS-Protection: 1; mode=block.
  • X-Content-Type-Options
    Sedangkan yang ini memberitahu browser agar tidak mendeteksi apa jenis konten yang akan dimuat dan sebaiknya mendapatkan informasi tersebut dari deklarasi tipe kontennya. Ini mengurangi resiko bahaya download file tanpa ijin. Rekomendasi: X-Content-Type-Options: nosniff.
  • Strict-Transport-Security
    Kalau sudah menggunakan sertifikat SSL pada koneksi anda maka HSTS *(HTTP Strict Transport Security) adalah setting terbaik agar browser dipaksa selalu menggunakan HTTPS untuk mengakses situs anda. Jeleknya kalau implementasi SSL anda ada yang salah akan langsung error bagi pengunjung yang pernah membuka website anda. Rekomendasi: strict-transport-security: max-age=31536000; includeSubdomains.
  • Public-Key-Pins
    Untuk mencegah ada yang membajak koneksi HTTPS anda dengan menyamarkan sertifikat SSL maka HPKP (HTTP Public Key Pinning) bisa diaktifkan.

Saya contohkan bagaimana penerapan headernya pada beberapa web server tapi hanya untuk HTTP:
Apache

Header set X-Frame-Options DENY
Header set X-XSS-Protection "1; mode=block
Header set X-Content-Security-Policy "allow 'self';"
Header set X-Content-Type-Options "nosniff"
Header set Content-Security-Policy: script-src 'self'

Bisa diletakkan pada konfigurasi Apache, virtual host atau file .htaccess.

Nginx

add_header X-Frame-Options DENY
add_header X-XSS-Protection "1; mode=block
add_header X-Content-Security-Policy "allow 'self';"
add_header X-Content-Type-Options "nosniff"
add_header Content-Security-Policy: script-src 'self'

Tambahkan dalam blok location dalam setting virtual host Nginx.

Sedangkan untuk HTTPS bisa anda lengkapi sendiri karena masih sangat jarang yang mengaktifkannya. Aktif atau tidaknya bisa anda cek memanfaatkan cURL.

Semoga bermanfaat. 🙂

4 thoughts on “Mengenal security header pada HTTP/HTTPS

  1. halo gan, saya sudah coba letakkan kode diatas untuk nginx tapi gak pernah berhasil. mohon penjelasannya lebih rinci kalau bisa egan gambar. thx

    • Bisa dicopaskan kode lengkap yang mas pakai? Mas tes pakai apa kok tahu tidak berhasil? Ini Nginx versi berapa mas?

      Soal gambar isinya ya barisan kode diatas mas, tergantung kebutuhannya apa jadi tidak semua header akan dipakai.

Leave a Comment