it-swarm-id.com

Apakah aman menggunakan $ .support.cors = true; di jQuery?

Saya mencoba membuka layanan web di domain yang berbeda menggunakan metode ajax jQuery. Setelah melakukan beberapa penelitian sepertinya tidak memungkinkan ini dengan desain untuk mencegah skrip lintas situs.

Saya menemukan pekerjaan di sekitar yang termasuk baris ini:

$.support.cors = true;

di bagian atas kode javascript saya. Dari apa yang saya mengerti ini memungkinkan skrip lintas situs di jQuery.

Apakah memiliki baris kode ini membuat situs saya lebih rentan terhadap serangan? Saya selalu mendengar XSS dibahas sebagai masalah keamanan, apakah ada kegunaan yang sah untuk XSS?

52
Abe Miessler

XSS bukan fitur yang dapat diaktifkan di jQuery. Akan sangat sangat tidak biasa jika inti jQuery memiliki kerentanan XSS, tetapi itu mungkin dan disebut (XSS berbasis DOM =.

"Cross-Origin Resource Sharing" atau CORS tidak sama dengan XSS, [~ # ~] tetapi [~ # ~] , tetapi jika aplikasi web memiliki kerentanan XSS, maka penyerang akan memiliki akses seperti CORS ke semua sumber daya di domain itu. Singkatnya, CORS memberi Anda kendali atas cara Anda mematahkan kebijakan Asal yang sama sehingga Anda tidak perlu memperkenalkan kerentanan XSS sepenuhnya.

$.support.cors fitur permintaan bergantung pada Access-Control-Allow-Origin Tajuk respons HTTP. Ini bisa jadi kerentanan. Misalnya, jika aplikasi web memiliki Access-Control-Allow-Origin: * pada setiap halaman, maka seorang penyerang akan memiliki tingkat akses yang sama dengan kekosongan XSS. Hati-hati dengan halaman apa yang Anda perkenalkan dengan header CORS, dan cobalah dan hindari * sebanyak mungkin.

Jadi untuk menjawab pertanyaan Anda: [~ # ~] no [~ # ~] aplikasi web tidak perlu memperkenalkan kerentanan XSS karena ada jalan keluar the SOP seperti CORS/jsonp/cross domain proxy/ access-control-Origin .

35
rook

Ini dapat membantu hanya jika Anda memiliki CORS diaktifkan di browser Anda tetapi belum didukung oleh jQuery:

Untuk mengaktifkan permintaan lintas-domain di lingkungan yang belum mendukung cors tetapi mengizinkan permintaan XHR lintas-domain (windows gadget, dll), setel $ .support.cors = true ;. CORS WD

Hanya menyetel properti ini menjadi true tidak dapat menyebabkan kerentanan keamanan.

11
bjornd

Ketika seorang hacker dapat menyuntikkan kode skrip untuk mengubah permintaan ke domain lain, ia juga dapat mengatur flag javascript ini dalam skrip.

Jadi apakah flag ini diset tidak berubah banyak pada titik intrusi ini.

3
Tim