Definisi Content Security Policy, Alasan Mengapa CSP Penting, dan Contoh Penerapannya

Cross-Site-Scripting (XSS) adalah ancaman yang dilakukan oleh hacker pada suatu website. Serangan XSS dapat dicegah dengan penerapan Content Security Policy. Ada yang belum apapun tentang Content Security Policy? Kalem, kali ini akan dibahas mengenai CSP, makanya langsung simak saja yuk Definisi Content Security Policy, Alasan Mengapa CSP Penting, dan Contoh Penerapannya

Definisi Content Security Policy

Content Security Policy (CSP) merupakan lapisan perlindungan tambahan yang dirancang untuk mengamankan website dari berbagai serangan. CSP dapat menangkal serangan seperti Cross Site Scripting (XSS), yang mana pelaku mencoba menyisipkan kode berbahaya ke dalam website.

Content Security Policy berfungsi dengan memberitahukan browser tentang aturan-aturan yang mengatur sumber konten yang boleh dimuat oleh website.

Sebagai contoh, kalian dapat mengatur Content Security Policy melalui server web, seperti Apache atau Nginx, menambahkannya secara langsung dalam kode HTML, atau melalui bahasa pemrograman backend, seperti PHP.

Dengan mengaktifkan Content Security Policy, kalian dapat membatasi sumber-sumber yang diizinkan untuk memuat skrip, gambar, gaya, atau jenis konten lainnya.

Berikut ini gambar yang memberikan contoh penerapan Content Security Policy:

Content Security Policy

Bayangkan seorang pengguna mengunjungi website http://123.com. Situs ini memuat dua file utama: ‘file.js’ yang merupakan file JavaScript, dan ‘file.css’ yang merupakan file CSS.

Seorang peretas mencoba menyusupkan skrip ‘xss.js’. berbahaya dari sebuah situs. Jika server web 123.com sudah mengaktifkan Content Security Policy dengan kebijakan yang hanya memperbolehkan konten dari domain example.com (default-src http://www.123.com), maka hanya file ‘file.js’ dan ‘file.css’ yang akan dimuat oleh browser karena keduanya berasal dari domain yang sah.

Skrip berbahaya ‘xss.js’ dari domain lain akan diblokir oleh browser karena tidak sesuai dengan kebijakan CSP yang telah ditetapkan.

Sehingga,  Content Security Policy membantu memastikan bahwa hanya konten yang tepercaya dan berasal dari sumber yang sah yang dapat dimuat di website dan mengurangi risiko berbagai jenis serangan yang bisa membahayakan pengguna serta integritas website itu sendiri.

Alasan Pentingnya Content Security Policy 

Berikut ini beberapa alasan harus peduli dengan penggunaan content security policy:

Mengurangi Skrip Lintas Situs (Cross-Site Scripting)

Salah satu alasan utama mengapa Kebijakan Keamanan Konten (CSP) sangat penting adalah karena kemampuannya untuk mengurangi risiko serangan Cross-Site Scripting (XSS).

Serangan XSS adalah jenis serangan yang mana penyerang menyuntikkan skrip berbahaya ke dalam halaman web yang dilihat oleh pengguna. Ketika pengguna mengakses halaman yang terinfeksi, browser mereka akan menjalankan skrip berbahaya tersebut karena mempercayai konten yang diterima dari server.

Content Security Policy bekerja dengan memungkinkan administrator server menentukan daftar domain internet yang dianggap sah untuk menjalankan skrip di situs mereka.

Dengan kata lain, hanya skrip yang berasal dari domain yang telah terdaftar dalam daftar putih yang akan dijalankan oleh browser. Skrip dari sumber lain, termasuk skrip yang ditulis langsung dalam HTML atau melalui atribut penanganan kejadian (event handlers), akan diabaikan.

Artinya, jika seorang penyerang mencoba menyuntikkan skrip berbahaya dari sumber yang tidak dikenal atau tidak tepercaya, skrip tersebut tidak akan dijalankan oleh browser pengguna.

Makanya, Content Security Policy secara signifikan mengurangi kemungkinan serangan XSS berhasil karena skrip berbahaya tidak akan pernah dijalankan.

Mengurangi Penyadapan Paket (Packet Sniffing) dan Menerapkan HTTPS

Kebijakan Keamanan Konten (CSP) juga sangat penting karena membantu mengurangi risiko penyadapan paket (packet sniffing) dan mendorong penerapan HTTPS.

Penyadapan paket adalah teknik yang digunakan oleh penyerang untuk menangkap data yang dikirim antara browser dan server. Jika data tersebut tidak dienkripsi, penyerang dapat melihat informasi sensitif seperti kata sandi, nomor kartu kredit, dan data pribadi lainnya. Salah satu cara Content Security Policy melindungi data adalah dengan memungkinkan server untuk menentukan protokol yang diizinkan untuk memuat konten.

Selain itu, CSP memungkinkan server untuk mengarahkan ulang semua permintaan dari HTTP ke HTTPS secara otomatis. Artinya, jika pengguna mencoba mengakses website menggunakan HTTP, mereka akan secara otomatis diarahkan ke versi HTTPS yang lebih aman.

Selain itu, server dapat menandai semua cookie dengan atribut “secure”, yang berarti cookie hanya akan dikirim melalui koneksi HTTPS sehingga melindungi data pengguna dari penyadapan.

Website juga dapat menggunakan header HTTP Strict-Transport-Security (HSTS) untuk memastikan bahwa browser hanya terhubung ke situs melalui saluran terenkripsi. Melalui HSTS, browser akan mengingat untuk selalu menggunakan HTTPS saat mengakses situs tertentu bahkan jika pengguna mengetikkan alamat HTTP secara tidak sengaja.

Mempromosikan Praktek Terbaik (Best Practices)

Salah satu manfaat penting dari Kebijakan Keamanan Konten (CSP) adalah kemampuannya untuk mendorong praktik terbaik dalam pengembangan dan pengelolaan website.

Ketika mengimplementasikan CSP, mungkin akan menghadapi tantangan dengan kode pihak ketiga yang seringnya tidak aman atau berkualitas buruk. Banyak kode pihak ketiga menggunakan gaya inline yang tidak aman dan fungsi-fungsi berbahaya seperti eval(), dan seringnya dimuat dari berbagai server yang berbeda.

CSP membantu mengatasi masalah ini dengan memaksa pengembang dan penyedia pihak ketiga untuk membersihkan kode mereka. Melalui penerapan CSP, kalian harus menentukan dengan tepat sumber mana yang diizinkan untuk menjalankan skrip di situs kalian.

Artinya, kalian perlu meninjau dan mengevaluasi kode pihak ketiga yang digunakan, memastikan bahwa mereka mematuhi standar keamanan yang tinggi. Proses ini mungkin terasa merepotkan pada awalnya tetapi dalam jangka panjang, proses ini akan meningkatkan kualitas dan keamanan kode yang digunakan di situs kalian.

Selain itu, CSP mendorong untuk melayani semua konten dari sumber yang konsisten. Hal ini berarti mengurangi ketergantungan pada banyak server berbeda dan memastikan bahwa semua skrip, gambar, dan file lainnya berasal dari sumber yang tepercaya dan terkontrol.

Dengan melakukan ini, kalian dapat meningkatkan performa website karena permintaan ke server akan lebih efisien dan dapat diandalkan. CSP juga memberi kesempatan bagi kalian untuk bekerja lebih erat dengan vendor pihak ketiga.

Jika vendor tersebut menggunakan praktik yang tidak aman atau mempengaruhi performa situs kalian dengan banyak permintaan tambahan, kalian dapat meminta mereka untuk memperbaiki dan mengoptimalkan kode mereka.

Reporting

Salah satu fitur yang sangat berguna dari Kebijakan Keamanan Konten (CSP) adalah kemampuan untuk mempromosikan pelaporan insiden keamanan di website.

Ketika menjalankan website, kalian mungkin tidak selalu tahu apa yang sebenarnya terjadi pada situs tersebut ketika diakses oleh pengguna dari berbagai lokasi dan kondisi jaringan yang berbeda.

Di sinilah fitur pelaporan CSP menjadi sangat penting. Melalui pengaktifan pelaporan CSP, kalian dapat menerima laporan otomatis setiap kali ada pelanggaran kebijakan keamanan yang terjadi di situs kalian. Laporan ini akan dikirim ke URL yang ditentukan, memungkinkan untuk memantau dan menganalisis aktivitas yang mencurigakan atau tidak sah.

Fitur pelaporan ini sangat berguna karena memberikan wawasan tentang apa yang terjadi di situs kalian di dunia nyata, bukan hanya di lingkungan pengujian yang terkontrol.

Contoh Penerapan Content Security Policy

Untuk lebih memahami cara kerja Kebijakan Keamanan Konten (Content Security Policy atau CSP), berikut ini beberapa contoh penerapannya. 

Memuat Sumber Daya Hanya dari HTTPS

1Content-Security-Policy: default-src https:

Kode CSP di atas menginstruksikan browser untuk hanya memuat sumber daya dari situs yang menggunakan protokol HTTPS. Sehingga, semua sumber daya yang tidak menggunakan HTTPS akan diblokir.

Hal ini membantu memastikan bahwa data yang ditransfer antara browser dan server dienkripsi dan aman dari penyadapan.

Mengizinkan Eksekusi Skrip dari Domain Tertentu

Content-Security-Policy: script-src ‘self’ www.google-analytics.com linuxsec.org

CSP ini memungkinkan skrip untuk dieksekusi hanya jika berasal dari domain saat ini (didefinisikan dengan ‘self’), www.google-analytics.com, atau linuxsec.org. Melalui pengizinan skrip yang hanya dari sumber yang diketahui dan dipercaya, kalian dapat mencegah eksekusi skrip berbahaya dari domain yang tidak dikenal.

Mengizinkan Sumber Daya dari Subdomain

1Content-Security-Policy: default-src ‘self’ *.zonawibu.net

CSP ini menggunakan wildcard (*) untuk mengizinkan pemuatan sumber daya dari domain saat ini dan semua subdomain dari zonawibu.net. Hal ini berguna saat memiliki banyak subdomain dan ingin mengizinkan pemuatan konten dari semua subdomain tersebut tanpa perlu menuliskan masing-masing secara eksplisit.

Header Keamanan Content Security Policy

Bagi pemilik website yang ingin meningkatkan keamanan dengan menerapkan Kebijakan Keamanan Konten (Content Security Policy atau CSP), ada beberapa arahan yang dapat didefinisikan dalam header keamanan CSP.

Beberapa arahan ini mencakup berbagai aspek konten yang diizinkan atau diblokir. Berikut ini beberapa arahan yang direkomendasikan oleh OWASP (Open Web Application Security Project):

default-src

Menentukan kebijakan pemuatan untuk semua jenis sumber daya jika tidak ada arahan khusus yang ditentukan (fallback). Contoh: default-src ‘self’ yang artinya semua konten harus dimuat dari sumber yang sama dengan halaman.

script-src 

Menentukan dari mana skrip dapat dijalankan. Contoh: script-src ‘self’ https://apis.google.com yang artinya hanya skrip dari domain yang sama atau dari Google API yang diizinkan.

object-src

Menentukan dari mana sumber daya seperti plugin dapat dimuat. Contoh: object-src ‘none’ yang artinya tidak ada plugin yang diizinkan.

style-src

Menentukan dari mana gaya (CSS) dapat diterapkan. Contoh: style-src ‘self’ https://fonts.googleapis.com yang artinya hanya gaya dari domain yang sama atau dari Google Fonts yang diizinkan.

img-src

Menentukan dari mana gambar dapat dimuat. Contoh: img-src ‘self’ https://example.com yang artinya hanya gambar dari domain yang sama atau dari example.com yang diizinkan.

media-src

Menentukan dari mana video dan audio dapat dimuat. Contoh: media-src ‘self’ https://media.example.com yang artinya hanya media dari domain yang sama atau dari media.example.com yang diizinkan.

frame-src

Menentukan dari mana frame dapat dimuat. Contoh: frame-src ‘self’ https://example.com yang artinya hanya frame dari domain yang sama atau dari example.com yang diizinkan.

frame-ancestors

Menentukan sumber yang valid yang dapat membingkai halaman menggunakan <frame>, <iframe>, <object>, <embed>, atau <applet>. Contoh: frame-ancestors ‘none’ yang artinya tidak ada halaman yang diizinkan untuk membingkai halaman tersebut.

font-src

Menentukan dari mana font dapat dimuat. Contoh: font-src ‘self’ https://fonts.example.com yang artinya hanya font dari domain yang sama atau dari fonts.example.com yang diizinkan.

connect-src

Menentukan URI mana yang dapat dimuat menggunakan antarmuka skrip. Contoh: connect-src ‘self’ https://api.example.com yang artinya hanya koneksi ke domain yang sama atau ke api.example.com yang diizinkan.

form-action

Menentukan URI mana yang dapat digunakan sebagai tindakan dari elemen form HTML. Contoh: form-action ‘self’ https://forms.example.com yang artinya hanya formulir yang mengarah ke domain yang sama atau forms.example.com yang diizinkan.

sandbox

Menentukan kebijakan sandbox HTML yang diterapkan oleh agen pengguna ke sumber daya yang dilindungi. Contoh: sandbox allow-scripts yang artinya hanya skrip yang diizinkan dalam konteks sandbox.

script-nonce

Menentukan eksekusi skrip dengan mewajibkan kehadiran nonce yang ditentukan pada elemen skrip. Contoh: script-src ‘nonce-2726c7f26c’ yang artinya hanya skrip dengan nonce 2726c7f26c yang diizinkan.

plugin-types

Menentukan set plugin yang dapat dipanggil oleh sumber daya yang dilindungi dengan membatasi jenis sumber daya yang dapat disematkan. Contoh: plugin-types application/pdf yang artinya hanya plugin PDF yang diizinkan.

reflected-xss

Menginstruksikan agen pengguna untuk mengaktifkan atau menonaktifkan heuristik apa pun yang digunakan untuk memfilter atau memblokir serangan XSS reflektif. Contoh: reflected-xss block yang artinya agen pengguna akan memblokir serangan XSS reflektif.

report-uri

Menentukan URI tempat agen pengguna mengirim laporan tentang pelanggaran kebijakan. Contoh: report-uri /csp-violation-report-endpoint/ yang artinya laporan pelanggaran CSP akan dikirim ke endpoint tersebut.

Okay, jadi itulah penjelasan mengenai Content Security Policy atau CSP. Semoga bisa menambah insight kalian, ya 🙂

Luncurkan website berbasis WordPress kalian dengan Jetorbit yuk, dengan fitur yang membuat web jadi cepat serta gratis Theme Premium! Lebih cepat menggunakan WordPress Hosting untuk keperluan website Berita, Portal, Toko Online, dan Blogging berbasis WordPress.

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rata rata rating 0 / 5. Jumlah rate 0

Yuk Rate 5 Artikel Ini!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Bagikan:

Leave a Comment