Saat Anda sudah memiliki website, pastinya Anda akan memikirkan bagaimana cara meningkatkan keamanan pada website. Jangan sampai data-data yang ada di website diambil dan disalahgunakan oleh hacker. Pada panduan kali ini, Anda akan belajar salah satu upaya untuk meningkatkan keamanan pada website. Anda akan belajar bagaimana cara mencegah serangan XSS dengan memberikan fitur CSP di website melalui cPanel hosting.
Apa itu Content Security Policy?
Content Security Policy (CSP) adalah salah satu fitur yang bertujuan untuk meningkatkan keamanan suatu website. Fitur CSP dapat mencegah website Anda dari serangan XSS atau serangan code injection lainnya. Biasanya hacker melakukan serangan XSS dengan cara memasukkan script ke dalam website. Serangan ini digunakan untuk segala hal mulai dari pencurian data, perusakan situs, hingga distribusi malware.
CSP dirancang agar sepenuhnya kompatibel ke belakang (kecuali CSP versi 2 di mana ada beberapa ketidakkonsistenan yang disebutkan secara eksplisit dalam kompatibilitas mundur). Browser yang tidak mendukungnya masih bekerja dengan server yang mengimplementasikannya, dan sebaliknya. Browser yang tidak mendukung CSP mengabaikannya, berfungsi seperti biasa, default ke kebijakan asal yang sama standar untuk konten web. Jika situs tidak menawarkan header CSP, browser juga akan menggunakan kebijakan asal yang sama standar.
Untuk mengaktifkan CSP, Anda perlu mengonfigurasi server web Anda untuk mengembalikan CSP header HTTP. (Terkadang Anda mungkin melihat penyebutan tajuk X-Content-Security-Policy
, tetapi itu adalah versi lama dan Anda tidak perlu menentukannya lagi).
Alternatifnya, <meta> elemen dapat digunakan untuk mengonfigurasi kebijakan, misalnya :
<meta
http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src https://*; child-src 'none';" />
Catatan : Beberapa fitur, seperti pengiriman laporan pelanggaran CSP, hanya tersedia saat menggunakan header HTTP.
Ancaman CSP
Berikut ini merupakan beberapa ancaman CSP, yaitu :
1. Mengurangi cross site scrip
Tujuan utama CSP adalah untuk mengurangi dan melaporkan serangan XSS. Serangan XSS mengeksploitasi kepercayaan browser pada konten yang diterima dari server. Skrip berbahaya dijalankan oleh browser korban karena browser mempercayai sumber konten, meskipun tidak berasal dari tempat asalnya.
CSP memungkinkan administrator server untuk mengurangi atau menghilangkan vektor di mana XSS dapat terjadi dengan menentukan domain yang harus dianggap browser sebagai sumber skrip yang dapat dieksekusi yang valid. Browser yang kompatibel dengan CSP kemudian hanya akan menjalankan skrip yang dimuat dalam file sumber yang diterima dari domain yang diizinkan tersebut, mengabaikan semua skrip lainnya (termasuk skrip sebaris dan atribut HTML penanganan peristiwa).
Sebagai bentuk perlindungan tertinggi, situs yang tidak ingin mengizinkan skrip dieksekusi dapat memilih untuk melarang eksekusi skrip secara global.
2. Mengurangi serangan packet sniffing
Selain membatasi domain dari mana konten dapat dimuat, server dapat menentukan protokol mana yang boleh digunakan; misalnya (dan idealnya, dari sudut pandang keamanan), server dapat menentukan bahwa semua konten harus dimuat menggunakan HTTPS. Strategi keamanan transmisi data yang lengkap tidak hanya mencakup penerapan HTTPS untuk transfer data, tetapi juga menandai semua cookie dengan secure atribut tersebut dan menyediakan pengalihan otomatis dari halaman HTTP ke mitra HTTPS mereka. Situs juga dapat menggunakan Strict-Transport-Security tajuk HTTP untuk memastikan bahwa browser terhubung hanya melalui saluran terenkripsi.
Cara Menggunakan CSP
Mengonfigurasi Content Security Policy melibatkan penambahan Content Security Policy header HTTP ke halaman web dan memberinya nilai untuk mengontrol sumber daya apa yang boleh dimuat oleh agen pengguna untuk halaman tersebut. Misalnya, halaman yang mengunggah dan menampilkan gambar dapat mengizinkan gambar dari mana saja, tetapi membatasi tindakan formulir ke titik akhir tertentu. Content Security Policy yang dirancang dengan baik membantu melindungi halaman dari serangan skrip lintas situs. Artikel ini menjelaskan cara membuat header seperti itu dengan benar, dan memberikan contoh.
1. Menentukan kebijakan Anda
Anda dapat menggunakan Content Security Policy tajuk HTTP untuk menentukan kebijakan Anda, seperti ini :
Kebijakan adalah string yang berisi arahan kebijakan yang menjelaskan Kebijakan Keamanan Konten Anda.
2. Menulis kebijakan
Kebijakan dijelaskan menggunakan serangkaian arahan kebijakan, yang masing-masing menjelaskan kebijakan untuk jenis sumber daya atau area kebijakan tertentu. Kebijakan Anda harus menyertakan default-src arahan kebijakan, yang merupakan fallback untuk jenis sumber daya lainnya saat mereka tidak memiliki kebijakannya sendiri (untuk daftar lengkap, lihat deskripsi arahan default-src). Kebijakan harus menyertakan arahan default-src atau script-src untuk mencegah skrip sebaris berjalan, serta memblokir penggunaan eval()
. Sebuah kebijakan perlu menyertakan arahan default-src atau script-src untuk membatasi penerapan gaya inline dari <style> elemen atau atribut style
. Ada arahan khusus untuk berbagai jenis item, sehingga setiap jenis dapat memiliki kebijakannya sendiri, termasuk font, bingkai, gambar, media audio dan video, skrip, dan pekerja.
Contoh Kasus Penggunaan Umum
Bagian ini memberikan contoh beberapa skenario kebijakan keamanan umum.
Contoh 1
Administrator situs web menginginkan semua konten berasal dari asal situs itu sendiri (ini tidak termasuk subdomain).
Contoh 2
Administrator situs web ingin mengizinkan konten dari domain tepercaya dan semua subdomainnya (tidak harus domain yang sama dengan yang ditetapkan CSP).
Contoh 3
Administrator situs web ingin mengizinkan pengguna aplikasi web untuk menyertakan gambar dari asal mana pun dalam kontennya sendiri, tetapi membatasi media audio atau video ke penyedia tepercaya, dan semua skrip hanya ke server tertentu yang menghosting kode tepercaya.
Di sini, secara default, konten hanya diizinkan dari asal dokumen, dengan pengecualian berikut :
- Gambar dapat dimuat dari mana saja (perhatikan karakter pengganti “*”).
- Media hanya diizinkan dari example.org dan example.net (dan bukan dari subdomain situs tersebut).
- Skrip yang dapat dieksekusi hanya diizinkan dari userscripts.example.com.
Contoh 4
Administrator situs web untuk situs perbankan online ingin memastikan bahwa semua kontennya dimuat menggunakan TLS, untuk mencegah penyerang menguping permintaan.
Server hanya mengizinkan akses ke dokumen yang dimuat secara khusus melalui HTTPS melalui single origin onlinebanking.example.com.
Contoh 5
Administrator situs web dari situs email web ingin mengizinkan HTML dalam email, serta gambar dimuat dari mana saja, tetapi bukan JavaScript atau konten yang berpotensi berbahaya lainnya.
Perhatikan bahwa contoh ini tidak menentukan script-src; dengan contoh CSP, situs ini menggunakan pengaturan yang ditentukan oleh direktif default-src, yang berarti skrip hanya dapat dimuat dari server asal.
Jadilah yang pertama untuk memberi nilai