Header respons HTTP Content-Security-Policy memungkinkan situs untuk mengontrol sumber daya mana yang dimuat agen pengguna untuk halaman tertentu. Kecuali dalam kasus khusus, kebijakan yang ditetapkan terutama melibatkan menentukan titik akhir sumber dan skrip server. Ini akan membantu menghentikan serangan skrip lintas situs
Dokumentasi:Login hyperlink terlihat.
Artikel ini menjelaskan Kebijakan Keamanan Konten W3C, atau disingkat CSP. Seperti namanya, spesifikasi ini terkait dengan keamanan konten dan terutama digunakan untuk menentukan sumber daya mana yang dapat dimuat halaman dan mengurangi terjadinya XSS.
Chrome awal mendukung CSP melalui header respons X-WebKit-CSP, sementara firefox dan IE mendukung X-Content-Security-Policy, dan Chrome25 dan Firefox23 mulai mendukung Content-Security-Policy standar.
Informasi sensitif tentang aplikasi web, seperti nama pengguna, kata sandi, nama mesin, dan/atau lokasi file sensitif, dapat dikumpulkan Pengguna pemula dapat dibujuk untuk memberikan informasi sensitif seperti nama pengguna, kata sandi, nomor kartu kredit, nomor jaminan sosial, dll
Pertama, mari kita buat proyek baru ASP.NET MVC, buat skrip js baru, dan muat kode js statistik Baidu secara dinamis, sebagai berikut:
Seperti yang ditunjukkan pada gambar di atas, kita dapat melihat kode skrip JS yang telah berhasil dimasukkan ke pihak ketiga (Baidu), jika ada beberapa kode berbahaya di JS pihak ketiga, seperti mencuri cookie, memodifikasi konten, melompat tautan, dll.
Bagaimana cara menghentikan pengenalan skrip JS pihak ketiga yang tidak aman?
Solusi
Kepala responsTambahkan "Kebijakan Keamanan Konten"misalnya:
Direktif | Contoh nilai instruksi | Menggambarkan | default-src | 'diri' cnd.a.com | Tentukan kebijakan pemuatan default untuk semua jenis sumber daya (JS, IMAGE, CSS, FONT WEB, permintaan AJAX, iframe, multimedia, dll.), dan gunakan default untuk jenis sumber daya tertentu jika tidak ada kebijakan yang ditentukan secara terpisah. | skrip-src | 'diri' js.a.com | Tentukan kebijakan pemuatan untuk JavaScript. | gaya-src | 'diri' css.a.com | Tentukan kebijakan pemuatan untuk gaya. | IMG-SRC | 'diri' img.a.com | Tentukan kebijakan pemuatan untuk gambar. | Hubungkan-SRC | 'diri' | Memuat kebijakan untuk permintaan dari Ajax, WebSockets, dll. Jika tidak diizinkan, browser mensimulasikan respons dengan status 400. | font-src | font.a.com | Memuat kebijakan untuk WebFont. | objek-src | 'diri' | <object><embed> <applet> Memuat kebijakan untuk plugin seperti flash yang diperkenalkan untuk tag seperti , atau . | media-src | media.a.com | <audio> <video> Memuat strategi untuk multimedia HTML yang diperkenalkan untuk tag seperti atau . | bingkai-src | 'diri' | Memuat kebijakan untuk bingkai. | kotak pasir | Formulir izinkan | Aktifkan kotak pasir (mirip dengan properti kotak pasir iframe) untuk sumber daya yang diminta. | URI Laporan | /report-uri | Beri tahu browser alamat mana yang harus dikirimkan informasi log jika sumber daya yang diminta tidak diizinkan oleh kebijakan. Khusus: Jika Anda ingin browser hanya melaporkan log dan tidak memblokir apa pun, Anda dapat menggunakan header Content-Security-Policy-Report-Only sebagai gantinya. |
Mari kita modifikasi file web.config proyek untuk menambahkan header respons kustom sebagai berikut:
Jalankan ulang proyek seperti yang ditunjukkan di bawah ini:
Browser berhasil memblokir pemuatan skrip js pihak ketiga:
Menolak untuk memuat skrip 'https://hm.baidu.com/hm.js?6dbaac17dfeb2840b5b09d2dff6d2319' karena melanggar arahan Kebijakan Keamanan Konten berikut: "script-src 'self' http://localhost:56888/ ". Perhatikan bahwa 'script-src-elem' tidak diatur secara eksplisit, jadi 'script-src' digunakan sebagai penggantian. (Akhir)
|