Apakah semua URL dienkripsi saat menggunakan enkripsi TLS / SSL (HTTPS)? Saya ingin tahu karena saya ingin semua data URL disembunyikan ketika menggunakan TLS / SSL (HTTPS).
Jika TLS / SSL memberi Anda enkripsi URL total, maka saya tidak perlu khawatir menyembunyikan informasi rahasia dari URL.
ssl
https
httprequest
Daniel Kivatinos
sumber
sumber
https://somewhere_i_trust/ways_to_protest_against_the_government/
. Kemudian URL tersebut berisi data rahasia, yaitu saran yang saya pertimbangkan untuk memprotes pemerintah saya.Jawaban:
Ya, koneksi SSL berada di antara lapisan TCP dan lapisan HTTP. Klien dan server pertama-tama membuat koneksi TCP terenkripsi aman (melalui protokol SSL / TLS) dan kemudian klien akan mengirim permintaan HTTP (GET, POST, DELETE ...) melalui koneksi TCP terenkripsi.
sumber
Karena tidak ada yang memberikan tangkapan kawat, ini dia.
Nama Server (bagian domain dari URL) disajikan dalam
ClientHello
paket, dalam teks biasa .Berikut ini menunjukkan permintaan browser untuk:
https://i.stack.imgur.com/path/?some=parameters&go=here
Lihat jawaban ini untuk lebih lanjut tentang bidang versi TLS (ada 3 di antaranya - bukan versi, bidang yang masing-masing berisi nomor versi!)
Dari https://www.ietf.org/rfc/rfc3546.txt :
Pendeknya:
FQDN (bagian domain dari URL) DAPAT dikirimkan secara jelas di dalam
ClientHello
paket jika ekstensi SNI digunakanSisa URL (
/path/?some=parameters&go=here
) tidak memiliki bisnis di dalamClientHello
karena URL permintaan adalah hal HTTP (OSI Layer 7), oleh karena itu tidak akan pernah muncul dalam jabat tangan TLS (Layer 4 atau 5). Yang akan datang nanti dalamGET /path/?some=parameters&go=here HTTP/1.1
permintaan HTTP, SETELAH yang aman saluran TLS didirikan.RINGKASAN BISNIS PLAN
Nama domain DAPAT ditransmisikan dengan jelas (jika ekstensi SNI digunakan dalam jabat tangan TLS) tetapi URL (jalur dan parameter) selalu dienkripsi.
PEMBARUAN MARET 2019
Terima kasih carlin.scott untuk membawa yang ini.
Payload dalam ekstensi SNI sekarang dapat dienkripsi melalui draft proposal RFC ini . Kemampuan ini hanya ada di TLS 1.3 (sebagai opsi dan terserah kedua ujungnya untuk mengimplementasikannya) dan tidak ada kompatibilitas mundur dengan TLS 1.2 dan di bawah.
CloudFlare melakukannya dan Anda dapat membaca lebih lanjut tentang bagian dalam di sini - Jika ayam harus ada sebelum telur, di mana Anda meletakkan ayam?
Dalam praktiknya ini berarti bahwa alih-alih mentransmisikan FQDN dalam teks biasa (seperti yang ditunjukkan oleh penangkapan Wireshark), ia sekarang dienkripsi.
CATATAN: Ini membahas aspek privasi lebih daripada keamanan karena pencarian DNS balik MUNGKIN mengungkapkan host tujuan yang dituju.
sumber
Seperti yang telah ditunjukkan oleh jawaban lain , https "URL" memang dienkripsi. Namun, permintaan / respons DNS Anda saat menyelesaikan nama domain mungkin tidak, dan tentu saja, jika Anda menggunakan browser, URL Anda mungkin direkam juga.
sumber
Seluruh permintaan dan respons dienkripsi, termasuk URL.
Perhatikan bahwa ketika Anda menggunakan HTTP Proxy, ia tahu alamat (domain) dari server target, tetapi tidak tahu jalur yang diminta pada server ini (yaitu permintaan dan respons selalu dienkripsi).
sumber
Saya setuju dengan jawaban sebelumnya:
Secara eksplisit:
Dengan TLS, bagian pertama URL ( https://www.example.com/ ) masih terlihat saat membangun koneksi. Bagian kedua (/ herearemygetparameters / 1/2/3/4) dilindungi oleh TLS.
Namun ada beberapa alasan mengapa Anda tidak harus memasukkan parameter dalam permintaan GET.
Pertama, sebagaimana telah disebutkan oleh orang lain: - kebocoran melalui bilah alamat browser - kebocoran melalui riwayat
Selain itu Anda memiliki kebocoran URL melalui pengarah http: pengguna melihat situs A di TLS, lalu mengklik tautan ke situs B. Jika kedua situs berada di TLS, permintaan ke situs B akan berisi URL lengkap dari situs A di parameter pengarah permintaan. Dan admin dari situs B dapat mengambilnya dari file log server B.)
sumber
Tambahan untuk jawaban bermanfaat dari Marc Novakowski - URL disimpan dalam log di server (misalnya, di / etc / httpd / logs / ssl_access_log), jadi jika Anda tidak ingin server mempertahankan informasi lebih lama istilah, jangan taruh di URL.
sumber
Iya dan tidak.
Bagian alamat server TIDAK dienkripsi karena digunakan untuk mengatur koneksi.
Ini mungkin berubah di masa depan dengan SNI dan DNS terenkripsi tetapi pada 2018 kedua teknologi tidak umum digunakan.
Jalur, string kueri, dll. Dienkripsi.
Catatan untuk permintaan GET, pengguna masih dapat memotong dan menempelkan URL keluar dari bilah lokasi, dan Anda mungkin tidak ingin memasukkan informasi rahasia di sana yang dapat dilihat oleh siapa pun yang melihat layar.
sumber
Pihak ketiga yang memantau lalu lintas juga dapat menentukan halaman yang dikunjungi dengan memeriksa lalu lintas Anda dan membandingkannya dengan lalu lintas yang dimiliki pengguna lain ketika mengunjungi situs tersebut. Misalnya, jika hanya ada 2 halaman di sebuah situs, satu jauh lebih besar dari yang lain, maka perbandingan ukuran transfer data akan memberi tahu halaman mana yang Anda kunjungi. Ada cara-cara ini bisa disembunyikan dari pihak ketiga tetapi mereka bukan perilaku server atau browser normal. Lihat misalnya makalah ini dari SciRate, https://scirate.com/arxiv/1403.0297 .
Secara umum jawaban lain benar, meskipun makalah ini menunjukkan bahwa halaman yang dikunjungi (yaitu URL) dapat ditentukan dengan cukup efektif.
sumber
Anda tidak dapat selalu mengandalkan privasi dari URL lengkap. Misalnya, seperti yang kadang-kadang terjadi pada jaringan perusahaan, perangkat yang disediakan seperti PC perusahaan Anda dikonfigurasikan dengan sertifikat root "tepercaya" tambahan sehingga browser Anda dapat secara diam-diam mempercayai proxy (man-in-the-middle) inspeksi lalu lintas https traffic . Ini berarti bahwa URL lengkap dibuka untuk diperiksa. Ini biasanya disimpan ke log.
Selain itu, kata sandi Anda juga terbuka dan mungkin dicatat dan ini adalah alasan lain untuk menggunakan kata sandi satu kali atau untuk sering mengubah kata sandi Anda.
Akhirnya, konten permintaan dan respons juga diekspos jika tidak dienkripsi.
Salah satu contoh pengaturan inspeksi dijelaskan oleh Checkpoint di sini . "Kafe internet" gaya lama menggunakan PC yang disediakan juga dapat diatur dengan cara ini.
sumber
Menautkan ke jawaban saya pada pertanyaan duplikat . URL tidak hanya tersedia dalam riwayat browser, sisi server mencatat tetapi juga dikirim sebagai tajuk Pengarah HTTP yang jika Anda menggunakan konten pihak ketiga, mengekspos URL ke sumber di luar kendali Anda.
sumber
Sekarang 2019 dan TLS v1.3 telah dirilis. Menurut Cloudflare, SNI dapat dienkripsi berkat TLS v1.3. Jadi, aku berkata pada diriku sendiri hebat! mari kita lihat tampilannya dalam paket TCP cloudflare.com Jadi, saya menangkap paket handshake "klien halo" dari respons server cloudflare menggunakan Google Chrome sebagai browser & wireshark sebagai sniffer paket. Saya masih dapat membaca nama server dalam teks biasa di dalam paket Halo halo.
Jadi, waspadalah terhadap apa yang dapat Anda baca karena ini masih bukan koneksi anonim. Middleware antara klien dan server bisa mencatat setiap domain yang diminta oleh klien.
Jadi sepertinya enkripsi SNI membutuhkan implementasi tambahan untuk bekerja bersama dengan TLSv1.3
Artikel berikut menjelaskan enkripsi SNI yang disediakan oleh Cloudflare sebagai bagian dari TLSv1.3. Namun, semua URL HTTP dari cloudflare.com dalam teks biasa dalam paket TCP di bawah TLS v1.3
[ https://blog.cloudflare.com/encrypted-sni/[[3]
sumber
network.security.esni.enabled
, aturnetwork.trr.mode
ke 2 (yang saat ini mengatur resolver DoH Anda ke CloudFlare), dan restart browser (sic!); maka akan menggunakan ESNI - di mana didukung oleh infrastruktur domain. Lihat blog.mozilla.org/security/2018/10/18/… untuk detailnya.Meskipun sudah ada beberapa jawaban bagus di sini, kebanyakan dari mereka berfokus pada navigasi browser. Saya menulis ini pada 2018 dan mungkin seseorang ingin tahu tentang keamanan aplikasi seluler.
Untuk aplikasi seluler , jika Anda mengontrol kedua ujung aplikasi (server dan aplikasi), selama Anda menggunakan HTTPS, Anda aman . iOS atau Android akan memverifikasi sertifikat dan mengurangi kemungkinan serangan MiM (itu akan menjadi satu-satunya titik lemah dalam semua ini). Anda dapat mengirim data sensitif melalui koneksi HTTPS yang akan dienkripsi selama transportasi . Hanya aplikasi Anda dan server akan tahu parameter apa pun yang dikirim melalui https.
Satu-satunya "mungkin" di sini adalah jika klien atau server terinfeksi dengan perangkat lunak berbahaya yang dapat melihat data sebelum dibungkus dalam https. Tetapi jika seseorang terinfeksi dengan perangkat lunak semacam ini, mereka akan memiliki akses ke data, apa pun yang Anda gunakan untuk mengangkutnya.
sumber
Selain itu, jika Anda sedang membangun API RESTful, kebocoran peramban dan masalah perujuk http sebagian besar dimitigasi karena klien mungkin bukan peramban dan Anda mungkin tidak memiliki orang yang mengklik tautan.
Jika demikian, saya akan merekomendasikan login oAuth2 untuk mendapatkan token pembawa. Dalam hal ini satu-satunya data sensitif akan menjadi kredensial awal ... yang mungkin harus tetap dalam permintaan pos
sumber
Meskipun Anda sudah memiliki jawaban yang sangat baik, saya sangat menyukai penjelasan di situs web ini: https://https.cio.gov/faq/#what-information-does-https-protect
singkatnya: menggunakan menyembunyikan HTTPS:
sumber