Pertanyaan Bisakah Anda melewati pengguna / lulus untuk HTTP Basic Authentication di parameter URL?


Saya percaya ini tidak mungkin, tetapi seseorang yang saya tahu bersikeras bahwa itu berhasil. Saya bahkan tidak tahu parameter apa yang harus dicoba, dan saya belum menemukan ini didokumentasikan di mana saja.

Saya mencoba http://myserver.com/~user=username&password=mypassword tetapi itu tidak berhasil.

Dapatkah Anda mengonfirmasi bahwa sebenarnya tidak mungkin untuk melewati pengguna / melewati parameter HTTP (GET atau POST)?


124
2018-03-21 11:16




pengguna: pass@example.com - Smudge
@sam - apa? Bagaimana tampilan URL lengkapnya? - ripper234
Semua dalam spesifikasi ietf.org/rfc/rfc1738.txt (3.1) - Smudge
@sam - Maaf, saya gagal mem-parse komentar Anda karena suatu alasan. - ripper234


Jawaban:


Memang tidak mungkin untuk meneruskan nama pengguna dan kata sandi melalui parameter kueri dalam autentikasi HTTP standar. Sebagai gantinya, Anda menggunakan format URL khusus, seperti ini: http://username:password@example.com/ - ini mengirim kredensial di header "Otorisasi" HTTP standar.

Ada kemungkinan bahwa siapa pun yang Anda ajak bicara sedang memikirkan modul atau kode khusus yang melihat parameter kueri dan memverifikasi kredensial. Ini bukan autentikasi HTTP standar, meskipun, ini adalah hal khusus aplikasi.


167
2018-03-21 11:38



Terima kasih, ini hanya apa yang saya cari ... itu tidak penting bahwa itu MENDAPATKAN parameter, hanya saja saya bisa menyusunnya ke URL. - ripper234
FYI, the http://username:password@example.com format tidak lagi didukung oleh keduanya YAITU atau Chrome, tidak akan terkejut jika yang lain mengikuti jika mereka belum melakukannya. - T.J. Crowder
Sebenarnya berfungsi dengan baik di Chrome. Hanya IE yang menjadi bocah manja. - Damien Overeem ツ
@DamienOvereem versi Chrome apa yang Anda gunakan? saya berada di mac os x 37 dan sepertinya tidak berhasil untuk saya - Chris DaMour
Saya telah belajar bahwa Chrome membuatnya dinonaktifkan untuk sementara waktu, tetapi mengaktifkan kembali fitur ini nanti. Saya juga belajar bahwa Safari akan membuang kesalahan phishing ketika menjalankan jenis tautan ini. Pada dasarnya waktu otentikasi http berbasis url sudah berakhir .. - Damien Overeem ツ


http: // username: password@example.com akan berfungsi untuk FireFox, Chrome, Safari, BUT bukan untuk IE.

Basis Pengetahuan Microsoft


16
2018-01-23 10:50



Kemampuan ini telah dihapus dari Chrome 19+. Lihat code.google.com/p/chromium/issues/detail?id=123150 - Moshe Katz
Dengan membaca laporan bug saya, itu ditambahkan kembali ke Chrome 20. Tentu saja, saya berharap akan melihat banyak terus mengeluh tentang hal itu jika tidak. - womble♦
Saya sekarang meminta untuk Internet Explorer: connect.microsoft.com/IE/feedback/details/873575/…. Kasus penggunaan sedikit berbeda, tetapi membahas masalah yang sama;) - SimonSimCity
@Diago jika kata sandi mengandung '@' maka tidak berfungsi. itu memberi kesalahan fatal, adakah yang bisa memberitahu saya bagaimana kami dapat memberikan username & password sekaligus - Ashish Jain
@AshishJain - Saya akan mencoba melarikan diri @ dalam kata sandi sebagai %40. (Saya tidak tahu apakah itu berfungsi, dan mungkin tergantung pada server atau kombinasi browser / server.) - David Moles


Melewati parameter autentikasi Dasar di URL tidak disarankan

Ada kolom header Otorisasi untuk tujuan ini, periksa di sini: daftar tajuk http

Cara menggunakannya ditulis di sini: Otentikasi akses dasar

Di sana Anda juga dapat membaca bahwa meskipun masih didukung oleh beberapa peramban, solusi yang disarankan untuk menambahkan kredensial otorisasi Dasar di url tidak disarankan.

Baca juga bab 4.1 di RFC 2617 - Otentikasi HTTP untuk detail lebih lanjut tentang mengapa TIDAK menggunakan Otentikasi Dasar.


Melewati parameter autentikasi dalam string kueri

Saat menggunakan OAuth atau layanan autentikasi lainnya, Anda sering juga dapat mengirim token akses dalam string kueri, bukan di header otorisasi, sehingga sesuatu seperti:

GET https://www.example.com/api/v1/users/1?access_token=1234567890abcdefghijklmnopqrstuvwxyzABCD

14
2017-09-24 07:55



Dan bagaimana cara mengenkode header Otorisasi ke dalam URL? - womble♦
Bukankah itu bentuk yang Anda nyatakan sekarang sudah ditinggalkan? - womble♦
Pertanyaan yang Anda jawab dengan "Ada bidang header Otorisasi untuk tujuan ini" adalah menanyakan cara meletakkan parameter autentikasi ke dalam URL. Jika Anda tidak dapat menyandikan kolom tajuk HTTP ke URL (yang Anda tidak bisa), jawaban Anda adalah non sequitur. - womble♦
Dapatkah Anda mengutip di mana dalam standar URI mengatakan bahwa melewati parameter otentikasi dasar di URI sudah ditinggalkan? RFC 2396 hanya mengatakan bahwa itu "TIDAK DIREKOMENDASIKAN" karena rincian otentikasi dalam teks biasa, dalam banyak keadaan, bukan ide yang bagus (yang saya setujui), sementara RFC 7235 tidak menyebutkan apa-apa. Tidak ada tempat di spesifikasi yang dapat saya cari mengatakan bahwa itu sudah ditinggalkan. - Lie Ryan
@Wilt: Saya harus minta maaf, Anda memang benar. Petunjuk Anda bahwa spesifikasi itu "diubah" menghasut saya untuk menyelidiki lebih lanjut (RFC tidak pernah dimodifikasi setelah dipublikasikan / diberi nomor). Saya baru saja menemukan bahwa RFC 2396 sebenarnya telah digantikan oleh RFC 3986, yang tidak dapat saya temukan sebelumnya. RFC 3986 tidak menyebutkan penghentian nama pengguna: sintaks kata sandi: Use of the format "user:password" in the userinfo field is deprecated. - Lie Ryan


Hal ini (jelas) mungkin untuk mengirim string apa pun dalam parameter GET, meskipun tidak disarankan untuk mengirim login dan kata sandi karena dapat membuatnya sangat terlihat, terutama jika itu tidak ada dalam permintaan AJAX.

Anda akan perlu mengkodekan halaman server untuk mengekstrak login dan kata sandi dan kemudian memvalidasi dan menggunakannya dengan cara apa pun yang diperlukan.


0
2017-09-11 08:22