Bagaimana cara bersantai Kebijakan Keamanan Konten di Chrome?

17

Akhir-akhir ini, beberapa situs web seperti Facebook menggunakan Kebijakan Keamanan Konten (CSP) untuk membatasi pemuatan skrip dari "sumber yang tidak dipercaya". Misalnya, ketika meminta konten HTML Facebook (mis. Https://www.facebook.com ), respons HTTP Facebook mencakup header respons berikut:

x-webkit-csp:default-src *;script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net;style-src * 'unsafe-inline';connect-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.spotilocal.com:* https://*.akamaihd.net ws://*.facebook.com:* http://*.akamaihd.net;

Ini berdampak pada beberapa bookmarklet yang perlu memuat dan mengeksekusi perpustakaan Javascript dari sumber yang tidak dipercaya.

Misalnya, setiap kali saya mencoba menjalankan bookmarklet Show Anchors pada halaman Facebook, eksekusi bookmarklet ini gagal saat mencoba memuat jQuery dari sumber yang tidak terpercaya. Di konsol Pengembang Chrome, ia akan mengatakan:

Refused to load the script 'http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js' because it violates the following Content Security Policy directive: "script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net".

Saya telah menemukan halaman dokumentasi Chrome tentang topik ini, tetapi itu hanya berlaku untuk ekstensi Chrome .

Saya mencari solusi yang memungkinkan saya

  • baik untuk sekali waktu menonaktifkan CSP
  • atau daftar putih sumber terpercaya saya secara permanen.
Abdull
sumber
@Rudie Apakah itu akan berfungsi untuk Chrome Mobile?
Michael
@Michael Jika Chrome Mobile mendukung ekstensi modern. WeRequest agak baru. Saya tidak menggunakan Chrome Mobile, jadi saya tidak tahu.
Rudie

Jawaban:

2

Metode yang Didukung oleh Aplikasi Chrome

Gunakan perpustakaan templating

Gunakan perpustakaan yang menawarkan templat yang dikompilasi dan Anda siap. Anda masih dapat menggunakan perpustakaan yang tidak menawarkan prakompilasi, tetapi itu akan membutuhkan beberapa pekerjaan di pihak Anda dan ada batasannya.

Anda perlu menggunakan sandboxing untuk mengisolasi konten apa pun yang ingin Anda lakukan. Kotak pasir mengangkat CSP pada konten yang Anda tentukan.

Konten lokal kotak pasir

Kotak pasir memungkinkan halaman yang ditentukan untuk disajikan dalam kotak pasir, asal yang unik. Halaman-halaman ini kemudian dibebaskan dari Kebijakan Keamanan Konten mereka. Halaman berpasir pasir dapat menggunakan iframe, skrip inline, dan eval () (dan dua yang terakhir dicegah). Itu akan memperbaiki 'tidak aman-sebaris' dan 'tidak aman-eval'.

  • Gunakan skrip sebaris di kotak pasir
  • Sertakan kotak pasir dalam manifes

Akses sumber daya jarak jauh

Anda dapat mengambil sumber daya jarak jauh melalui XMLHttpRequest dan melayani mereka melalui blob :, data :, atau filesystem: URL. Ini harus memperbaiki masalah pengambilan jQuery.

Persyaratan manifes

Untuk dapat melakukan cross-origin XMLHttpRequests, Anda harus menambahkan izin untuk host URL jarak jauh.

Asal-usul silang XMLHttpRequest

Ambil URL jarak jauh ke dalam aplikasi dan sajikan kontennya sebagai blob:URL.


Saya tidak berpikir Anda bisa melakukan semua ini. Untuk memperbaiki unsafe-evaldan unsafe-inlinemerespons tajuk, hanya pemilik skrip yang dapat memperbaiki kode atau jika berada dalam domain publik, Anda dapat memperbaikinya. Semua ini mungkin merupakan perbaikan satu kali.


Hacks

Tidak Aman di Jendela

http://wiki.greasespot.net/UnsafeWindow

Injeksi Skrip Konten

http://wiki.greasespot.net/Content_Script_Injection


Namun peretasan memiliki kelemahan karena mereka diketahui menyebabkan lubang keamanan setidaknya yang pertama, pasti.

akan ada kopi
sumber
0

Anda dapat mengedit pengaturan ini di tab konten, yang dapat Anda akses langsung dengan mengetik chrome://settings/contentdi bilah alamat. Anda dapat memasukkan daftar putih domain tertentu pada jenis konten tertentu.

Gman Smith
sumber
8
Di mana tepatnya dalam pengaturan konten saya melakukan ini, dan bagaimana? Saya mencoba menambahkan situs saya ke "pengecualian cookie dan data situs" tanpa pengaruh. Tidak ada pengaturan lain yang tampak relevan.
Michael