HTTP Security Header

HTTP header adalah informasi koneksi awal yg akan dibaca oleh browser. Banyak web admin yg suka lupa dengan keamanan website di sisi browser, umumnya lebih fokus keamanan di server. Tool untuk memperkuat security di browser adalah HTTP Security header. Yuk kita lita apa saja header2 untuk menambah keamanan website.

Strict-Transport-Security (HSTS)
Memerintahkan browser selalu menggunakan koneksi secure aka HTTPS.
Note: Pastikan SSL sudah terinstall, tidak expired dan sudah disetting dengan benar agar tidak muncul error pada saat visitor mengakses website. (baca tentang HSTS Preload di link ini)

Permissions-Policy
Header pengaturan ijin browser untuk mengakses device yg terhubung seperti: camera, geolocation, microphone, usb dll.

Referrer-Policy
Header untuk mengatur informasi referer baik untuk link internal atau external.

Content-Security-Policy (CSP)
Header CSP membuat daftar putih (whitelist) sumber konten mana saja yg bisa ditampilkan di website. Hal ini berguna untuk melindungi web agar browser tidak meloading script berbahaya dengan kata lain browser tidak akan meloading script/kontent selain dari daftar whitelist. Hal ini sangat berguna untuk menghilangkan script / konten penumpang gelap atau berbahaya lainnya.
Note: Cek ulang website Anda terutama jika menggunakan script external, jika tidak jalan tambahan domainnya atau setingan lainnya di CSP header.

X-Content-Type-Options (XCTO)
XCTO header memerintahkan browser agar tidak melakukan MIME sniffing atau mendeteksi jenis konten file. Informasi MIME harus sesuai dari deklarasi tipe kontennya.
Contoh web tanpa XCTO header: Jika ada file js.txt berisis kode2 javascript, browser akan menerima HTTP header MIME file ini adalah text/plain karena TXT. Tapi karena browser melakukan MIME Sniff, browser tahu file js.txt berisi konten javascript. Alhasil file js.txt akan dirender sebagai javascript pada browser.

X-Xss-Protection
Melindungi web dari serangan XSS (Cross-Site Scripting) atau serangan dengan injeksi kode script sehingga visitor mengira script ini adalah bagian dari website.

X-Frame-Options (XFO)
Mengatur browser boleh atau tidak menerima sisipan konten dari web lain, bisanya disisipkan dalam <frame>,<iframe>, <embed> atau <object>. Web tanpa XFO bisa jadi akan menampilakn iklan / konten dari ISP, penyedia Wifi gratis atau operator selurar. Dengan munculnya kontent luar bisa jadi ada resiko clickjacking. Apa sih clickjacking ? ini adalah tipuan hacker untuk agar visitor mengklik link / tombol yg biasanya dibuat mencolok dengan kata2 indah seperti: “Selamat Anda memenangkan $1000 klik disini dll” setelah itu visitor akan dialihkan ke web buatan si hacker untuk memasukkan informasi prabadi seperti nama, email, no kartu kredit dll. Tentunya akan sangat berbahaya.

Contoh Security Header

#open litespeed
set Strict-Transport-Security "max-age=31536000; preload; includeSubDomains" env=HTTPS
set X-FRAME-OPTIONS "SAMEORIGIN"
set X-XSS-Protection "1; mode=block"
set Referrer-Policy: strict-origin-when-cross-origin
set Permissions-Policy: camera=(), geolocation=(), microphone=()
set X-Content-Type-Options "nosniff"
set Content-Security-Policy: default-src data: 'self'  yoast.com ; script-src  yoast.com 'unsafe-eval' 'self' 'unsafe-inline' https: ; style-src 'unsafe-inline' https: ; connect-src 'self' yoast.com; font-src data: 'self'  googleapis.com fonts.gstatic.com; img-src 'self' data: ps.w.org;

#apache
Header set Strict-Transport-Security "max-age=31536000; preload; includeSubDomains" env=HTTPS
Header set X-FRAME-OPTIONS "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block"
Header set Referrer-Policy: strict-origin-when-cross-origin
Header set Permissions-Policy: camera=(), geolocation=(), microphone=()
Header set X-Content-Type-Options "nosniff"
Header set Content-Security-Policy: default-src data: 'self'  yoast.com ; script-src  yoast.com 'unsafe-eval' 'self' 'unsafe-inline' https: ; style-src 'unsafe-inline' https: ; connect-src 'self' yoast.com; font-src data: 'self'  googleapis.com fonts.gstatic.com; img-src 'self' data: ps.w.org;

#NGINX
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-FRAME-OPTIONS "SAMEORIGIN"
add_header X-XSS-Protection "1; mode=block"
add_header Referrer-Policy: strict-origin-when-cross-origin
add_header Permissions-Policy: camera=(), geolocation=(), microphone=()
add_header X-Content-Type-Options "nosniff"
add_header Content-Security-Policy: default-src data: 'self'  yoast.com ; script-src  yoast.com 'unsafe-eval' 'self' 'unsafe-inline' https: ; style-src 'unsafe-inline' https: ; connect-src 'self' yoast.com; font-src data: 'self'  googleapis.com fonts.gstatic.com; img-src 'self' data: ps.w.org;

Untuk Apache bisa disetting di file .htaccess level root domain, untuk open litespeed bisa disetting pada web admin, dan untuk Nginx bisa disetting di location virtual host.
Note: Contoh Content-Security-Policy di atas untuk web mantul.top, silahkan melakukan penyesuain sesuai kebutuhan web Anda.

Cek http header
Caranya gampang banget tinggal login ke root

curl -I https://mantul.top

atau dengan browser developer tool (biasanya ada di tab network)

Contoh tampilan http header di Chrome developer tool

Bisa juga cek melalui https://securityheaders.com

Contoh tampilan report security headers

0 0 votes
Article Rating

Suka dengan artikel ini ? Yuk bagikan ...

Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x