Koneksi soket dari ekstensi chrome diblokir oleh proxy/firewall

Saya memiliki aplikasi web dalam javascript yang terhubung ke soket menggunakan socket.io dan Ekstensi Chrome yang terhubung dengan cara yang sama dan ke server yang sama. Semuanya berfungsi dengan baik di sebagian besar komputer dan koneksi internet, tetapi salah satu komputer pelanggan saya gagal menyambungkan Ekstensi Chrome (aplikasi web berhasil tersambung).

Dengan memeriksa konsol ekstensi untuk background.js (skrip dalam ekstensi yang membuat koneksi soket) saya melihat bahwa ia tidak mencoba menyambung ke URL yang benar (server soket saya) tetapi ke URL yang tidak dikenal yang tampaknya merupakan proxy: https://gateway.zscloud.net/auT?origurl=http%3A%2F%2Fmy_socket_server_domain...

Karena ini hanya terjadi di komputer tertentu (dari 10 atau lebih yang telah saya coba sejauh ini) menggunakan koneksi internet yang berbeda (jaringan perusahaan, jaringan tamu, hotspot seluler) dan karena komputer lain di jaringan yang sama berhasil terhubung, Saya berasumsi sesuatu yang diinstal atau dikonfigurasi di komputer yang bermasalah menangkap permintaan koneksi sebelum itu terjadi dan mencoba mengarahkannya melalui proxy.

Sekali lagi, ini hanya terjadi dalam konteks Ekstensi Chrome. Komputer yang sama yang menggunakan koneksi internet yang sama TIDAK berhasil terhubung dari halaman web di browser yang sama (Google Chrome).

Adakah yang tahu apa masalahnya? Klien tidak mengetahui adanya perangkat lunak keamanan (firewall, antivirus, dll...) yang dapat menyebabkan hal ini, namun komputer tersebut dikelola oleh perusahaannya sehingga admin dapat melakukan hal tersebut untuknya. Namun, jika demikian, bukankah koneksi dari halaman web juga harus diambil? Apakah ada sesuatu yang khusus untuk koneksi soket di Ekstensi Chrome yang berbeda dari aplikasi web biasa?

Terima kasih!


person protozoo    schedule 17.08.2017    source sumber


Jawaban (1)


Koneksi WebSocket berbeda dari permintaan HTTP normal; mereka memerlukan peningkatan protokol setelah menetapkan bahwa (beberapa!) proxy mungkin tidak dapat mendukungnya.

Saya pernah berada di belakang salah satu proxy (transparan) di tempat kerja; namun, ia tidak mencoba mencegat HTTPS, yang berarti saya dapat menggunakan wss: WebSockets tetapi tidak ws: WebSockets.

..yang seharusnya Anda gunakan! Dengan Let's Encrypt di pasaran, hambatan masuk untuk HTTPS sangat rendah. Jika ada data sensitif yang dikirim melalui koneksi itu, itu demi kepentingan terbaik Anda.

Sebagai catatan, proxy tersebut adalah bagian dari ZScaler yang merupakan solusi keamanan. Sayangnya, ini menyertakan HTTPS MITM, jadi hal di atas sepertinya tidak akan menyelesaikan masalah (tetapi tetap harus diterapkan!). Ini diatur sebagai proxy tingkat OS - jika pengaturan itu dapat diubah, atau diganti dengan pengaturan proxy Chrome, itu akan memperbaikinya. Namun, hal itu akan mengganggu keamanan jaringan!

Jika Anda tidak dapat melakukan itu, maka klien Anda adalah SOL dan harus menyampaikan keluhan tentang solusi keamanan yang melanggar aplikasi yang sah.

Sunting: Saya melihat sekeliling dan menemukan ini, yang sepertinya mengklaim bahwa menggunakan SSL (yaitu, wss:) sudah cukup. Tapi itu dari tahun 2012 - mungkin sebelum ZScaler mampu melakukan MITM semua lalu lintas HTTPS.

Seharusnya dapat menguji apakah wss: switch akan berfungsi menggunakan https://www.websocket.org/echo.html - jika dapat terhubung maka semuanya akan berfungsi lebih dari wss:

person Xan    schedule 17.08.2017
comment
Maaf, lupa membalas jawaban Anda. Itu sangat membantu, terima kasih! - person protozoo; 14.09.2017