Bagaimana Anda menonaktifkan autocomplete
browser utama untuk spesifik input
(atau form field
)?
html
forms
browser
autocomplete
Brett Veenstra
sumber
sumber
Jawaban:
Firefox 30 mengabaikan
autocomplete="off"
kata sandi, memilih untuk meminta pengguna, bukan apakah kata sandi harus disimpan pada klien. Perhatikan komentar berikut dari 5 Mei 2014:Menurut dokumentasi Jaringan Pengembang Mozilla , atribut elemen formulir Boolean
autocomplete
mencegah data formulir dari di-cache di browser yang lebih lama.sumber
Selain itu
autocomplete=off
, Anda juga bisa meminta nama bidang formulir Anda secara acak oleh kode yang menghasilkan halaman, mungkin dengan menambahkan beberapa string khusus sesi ke akhir nama.Ketika formulir dikirimkan, Anda dapat menghapus bagian itu sebelum memprosesnya di sisi server. Ini akan mencegah browser web menemukan konteks untuk bidang Anda dan juga mungkin membantu mencegah serangan XSRF karena penyerang tidak akan bisa menebak nama bidang untuk pengiriman formulir.
sumber
$_SESSION['codefield_name'] = md5(uniqid('auth', true));
Sebagian besar peramban dan pengelola kata sandi utama (dengan benar, IMHO) sekarang diabaikan
autocomplete=off
.Mengapa? Banyak bank dan situs web "keamanan tinggi" lainnya ditambahkan
autocomplete=off
ke halaman login mereka "untuk tujuan keamanan" tetapi ini sebenarnya mengurangi keamanan karena membuat orang mengubah kata sandi di situs dengan keamanan tinggi ini menjadi mudah diingat (dan karenanya retak) karena pelengkapan otomatis rusak.Dahulu kebanyakan pengelola kata sandi mulai mengabaikan
autocomplete=off
, dan sekarang peramban mulai melakukan hal yang sama hanya untuk input nama pengguna / kata sandi.Sayangnya, bug dalam implementasi pelengkapan otomatis memasukkan info nama pengguna dan / atau kata sandi ke dalam bidang formulir yang tidak sesuai, menyebabkan kesalahan validasi formulir, atau lebih buruk lagi, secara tidak sengaja memasukkan nama pengguna ke dalam bidang yang sengaja dikosongkan oleh pengguna.
Apa yang harus dilakukan pengembang web?
Chrome 34, sayangnya, akan mencoba mengisi ulang isian dengan pengguna / pass setiap kali melihat bidang kata sandi. Ini adalah bug yang cukup buruk yang diharapkan, mereka akan mengubah perilaku Safari. Namun, menambahkan ini ke bagian atas formulir Anda tampaknya menonaktifkan autofill kata sandi:
Saya belum menyelidiki IE atau Firefox secara menyeluruh tetapi akan dengan senang hati memperbarui jawabannya jika orang lain memiliki info di komentar.
sumber
type='password'
bidang pada satu halaman menyebabkan "simpan kata sandi" peramban secara otomatis diabaikan, yang membuat seluruh perasaan masuk akal karena formulir pendaftaran cenderung meminta kata sandi dua kali ketika formulir login hanya meminta satu kali.Terkadang bahkan pelengkapan otomatis = mati tidak akan mencegah untuk mengisi kredensial ke bidang yang salah, tetapi bukan bidang pengguna atau nama panggilan.
Penanganan masalah ini merupakan tambahan untuk posting apinstein tentang perilaku browser.
perbaiki IsiOtomatis browser hanya-baca dan atur fokus yang dapat ditulis (klik dan tab)
Pembaruan: Mobile Safari menetapkan kursor di lapangan, tetapi tidak menampilkan keyboard virtual. Perbaikan baru berfungsi seperti sebelumnya tetapi menangani keyboard virtual:
Demo Langsung https://jsfiddle.net/danielsuess/n0scguv6/
// UpdateEnd
Karena Browser otomatis mengisi kredensial ke bidang teks yang salah !?
Saya perhatikan perilaku aneh ini di Chrome dan Safari, ketika ada bidang kata sandi dalam bentuk yang sama. Saya kira, browser mencari bidang kata sandi untuk memasukkan kredensial Anda yang disimpan. Kemudian secara otomatis mengisi (hanya menebak karena pengamatan) bidang input-teks terdekat, yang muncul sebelum bidang kata sandi di DOM. Karena browser adalah contoh terakhir dan Anda tidak dapat mengontrolnya,
Perbaikan baca-baca di atas ini berhasil untuk saya.
sumber
readonly
dihapus, pemilihan bidang berikutnya akan mengembalikan otomatis.Ini akan bekerja di Internet Explorer dan Mozilla FireFox, downside adalah bahwa itu bukan standar XHTML.
sumber
input type="password"
. Semoga tidak ada browser lain yang memilih untuk menghapus fungsi ini.autocomplete="off"
padaform
adalah satu-satunya hal yang berfungsi untuk Chrome.Solusi untuk Chrome adalah menambahkan
autocomplete="new-password"
kata sandi tipe input. Silakan periksa Contoh di bawah ini.Contoh:
Chrome selalu melengkapi data secara otomatis jika menemukan kotak kata sandi jenis , cukup untuk menunjukkan kotak itu
autocomplete = "new-password"
.Catatan: pastikan dengan
F12
perubahan yang Anda lakukan, berkali-kali browser menyimpan halaman dalam cache, ini memberi saya kesan buruk bahwa itu tidak berfungsi, tetapi browser sebenarnya tidak membawa perubahan.sumber
Seperti yang orang lain katakan, jawabannya adalah
autocomplete="off"
Namun, saya pikir itu layak menyatakan mengapa itu ide yang baik untuk menggunakan ini dalam kasus-kasus tertentu karena beberapa jawaban untuk ini dan pertanyaan duplikat menyarankan lebih baik untuk tidak mematikannya.
Menghentikan browser yang menyimpan nomor kartu kredit tidak boleh diserahkan kepada pengguna. Terlalu banyak pengguna bahkan tidak menyadari itu masalah.
Sangat penting untuk mematikannya di bidang kode keamanan kartu kredit. Seperti yang dinyatakan halaman ini :
Masalahnya adalah, jika itu adalah komputer umum (warnet, perpustakaan, dll.) Maka mudah bagi pengguna lain untuk mencuri detail kartu Anda, dan bahkan pada komputer Anda sendiri situs web jahat dapat mencuri data yang dilengkapi secara otomatis .
sumber
Saya telah memecahkan pertarungan tanpa akhir dengan Google Chrome dengan menggunakan karakter acak. Saat Anda selalu membuat pelengkapan otomatis dengan string acak, itu tidak akan pernah mengingat apa pun.
Semoga itu akan membantu orang lain.
sumber
autocompleteoff
kelas ke kolom input yang Anda inginkan.Saya harus memohon berbeda dengan jawaban yang mengatakan untuk menghindari penonaktifan pelengkapan otomatis.
Hal pertama yang muncul adalah pengisian-otomatis yang tidak dinonaktifkan secara eksplisit pada bidang formulir masuk adalah kegagalan PCI-DSS. Selain itu, jika mesin lokal pengguna dikompromikan, maka data autocomplete apa pun dapat diperoleh secara sepele oleh penyerang karena disimpan di tempat yang jelas.
Tentu saja ada argumen untuk kegunaan, namun ada keseimbangan yang sangat baik ketika datang ke bidang formulir mana yang harus dinonaktifkan autocomplete dan mana yang tidak.
sumber
Tiga opsi: Pertama:
Kedua:
Ketiga (kode javascript):
sumber
Pada yang terkait atau sebenarnya, pada catatan yang sepenuhnya berlawanan -
sumber
Kami benar-benar menggunakan ide sasb untuk satu situs. Itu adalah aplikasi web perangkat lunak medis untuk menjalankan kantor dokter. Namun, banyak klien kami adalah ahli bedah yang menggunakan banyak stasiun kerja yang berbeda, termasuk terminal semi-publik. Jadi, mereka ingin memastikan bahwa seorang dokter yang tidak memahami implikasi kata sandi yang disimpan secara otomatis atau tidak memperhatikan tidak dapat secara tidak sengaja membiarkan info masuk mereka mudah diakses. Tentu saja, ini sebelum ide penjelajahan pribadi yang mulai ditampilkan di IE8, FF3.1, dll. Meski begitu, banyak dokter dipaksa untuk menggunakan browser sekolah lama di rumah sakit dengan IT yang tidak akan berubah.
Jadi, kami meminta halaman login menghasilkan nama bidang acak yang hanya akan berfungsi untuk posting itu. Ya, itu kurang nyaman, tetapi itu hanya memukul pengguna di atas kepala tentang tidak menyimpan informasi login di terminal publik.
sumber
Tidak ada solusi yang berfungsi untuk saya dalam percakapan ini.
Saya akhirnya menemukan solusi HTML murni yang tidak memerlukan Javascript , bekerja di browser modern (kecuali IE; harus ada setidaknya 1 tangkapan, kan?), Dan tidak mengharuskan Anda untuk menonaktifkan pelengkapan otomatis untuk seluruh formulir.
Cukup matikan pelengkapan otomatis pada
form
dan kemudian nyalakan untuk apa pun yanginput
Anda inginkan berfungsi dalam formulir. Sebagai contoh:sumber
Baru diatur
autocomplete="off"
. Ada alasan yang sangat bagus untuk melakukan ini: Anda ingin memberikan fungsionalitas autocomplete sendiri!sumber
Saya telah mencoba solusi tanpa akhir, dan kemudian saya menemukan ini:
Alih-alih
autocomplete="off"
hanya menggunakan sajaautocomplete="false"
Sesederhana itu, dan itu berfungsi seperti pesona di Google Chrome juga!
sumber
Ini bekerja untuk saya.
Kami juga dapat menggunakan strategi ini di kontrol lain seperti teks, pilih dll
sumber
Saya pikir
autocomplete=off
didukung dalam HTML 5.Tanyakan kepada diri Anda mengapa Anda ingin melakukan ini - mungkin masuk akal dalam beberapa situasi tetapi jangan lakukan hanya demi melakukannya.
Ini kurang nyaman bagi pengguna dan bahkan bukan masalah keamanan di OS X (disebutkan oleh Soren di bawah). Jika Anda khawatir orang mencuri kata sandi mereka dari jarak jauh - pencatat keystroke masih bisa melakukannya meskipun aplikasi Anda menggunakan
autcomplete=off
.Sebagai pengguna yang memilih untuk memiliki browser mengingat (sebagian besar) informasi saya, saya akan merasa menjengkelkan jika situs Anda tidak mengingat milik saya.
sumber
untuk input yang Anda tidak ingin mereka untuk mengingat data formulir (
username
,password
, dll) seperti yang ditunjukkan di bawah ini:Semoga ini membantu.
sumber
$(document).on('focus', 'input:password[readonly="readonly"]', function () { $(this).prop('readonly', false).blur().focus(); });
onfocusout="this.setAttribute('readonly', 'readonly');"
Solusi terbaik:
Cegah nama pengguna (atau email) dan kata sandi yang dilengkapi secara otomatis:
Mencegah pelengkapan otomatis bidang:
Penjelasan:
autocomplete
terus bekerja<input>
,autocomplete="off"
tidak bekerja, tetapi Anda dapat mengubahoff
ke string acak, sepertinope
.Bekerja di:
Chrome: 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 dan 64
Firefox: 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 dan 58
sumber
autocomplete
atribut dan masih menampilkan entri sebelumnya sebagai saran pelengkapan otomatis di bawah input.autocomplete
, saya masih mendapatkan dropdown saran berdasarkan nilai yang dimasukkan sebelumnya. Baik di desktop, tetapi tidak di Android chrome.Sedikit terlambat ke permainan ... tapi saya hanya mengalami masalah ini dan mencoba beberapa kegagalan, tetapi ini bekerja untuk saya ditemukan di MDN
sumber
Menambahkan
autocomplete="off"
ke tag formulir akan menonaktifkan pelengkapan otomatis peramban (yang sebelumnya diketik dalam bidang itu) dari semua
input
bidang dalam formulir itu.Diuji pada:
sumber
Menambahkan
autocomplete="off"
tidak akan memotongnya.Ubah atribut tipe input menjadi
type="search"
.Google tidak menerapkan pengisian otomatis pada input dengan jenis pencarian.
sumber
Gunakan nama dan id non-standar untuk isian, jadi alih-alih "name" have "name_". Browser kemudian tidak akan melihatnya sebagai bidang nama. Bagian terbaik tentang itu adalah bahwa Anda dapat melakukan ini pada beberapa bidang tetapi tidak semua dan itu akan melengkapi secara otomatis beberapa tetapi tidak semua bidang.
sumber
Untuk menghindari XHTML yang tidak valid, Anda dapat mengatur atribut ini menggunakan javascript. Contoh menggunakan jQuery:
Masalahnya adalah bahwa pengguna tanpa javascript akan mendapatkan fungsionalitas autocomplete.
sumber
coba ini juga jika
autocomplete="off"
tidak berfungsi:sumber
Saya tidak percaya ini masih menjadi masalah begitu lama setelah dilaporkan. Solusi di atas tidak bekerja untuk saya, karena safari tampaknya tahu kapan elemen tidak ditampilkan atau di luar layar, namun yang berikut ini berhasil bagi saya:
Semoga bermanfaat bagi seseorang!
sumber
Jadi ini dia:
sumber
Ini adalah masalah keamanan yang diabaikan browser sekarang. Browser mengidentifikasi dan menyimpan konten menggunakan nama input, bahkan jika pengembang menganggap informasi itu sensitif dan tidak boleh disimpan. Membuat nama input berbeda antara 2 permintaan akan menyelesaikan masalah (tetapi masih akan disimpan dalam cache browser dan juga akan meningkatkan cache browser). Meminta pengguna untuk mengaktifkan atau menonaktifkan opsi dalam pengaturan browsernya bukanlah solusi yang baik. Masalah ini dapat diperbaiki di backend.
Inilah perbaikan saya. Suatu pendekatan yang telah saya terapkan dalam kerangka kerja saya. Semua elemen pelengkapan otomatis dihasilkan dengan input tersembunyi seperti ini:
Server kemudian memproses variabel pos seperti ini:
Nilai dapat diakses seperti biasa
Dan browser tidak akan dapat menyarankan informasi dari permintaan sebelumnya atau dari pengguna sebelumnya.
Semua berfungsi seperti pesona, meskipun peramban diperbarui, ingin mengabaikan pelengkapan otomatis atau tidak. Itu adalah cara terbaik untuk memperbaiki masalah bagi saya.
sumber
Tidak ada peretasan yang disebutkan di sini bekerja untuk saya di Chrome. Ada diskusi tentang masalah ini di sini: https://code.google.com/p/chromium/issues/detail?id=468153#c41
Menambahkan ini di dalam sebuah
<form>
karya (setidaknya untuk saat ini):sumber
maxlength="0"
tidak mencegah firefox mengisi secara otomatis lapangan.Anda dapat menggunakan input.
Sebagai contoh;
sumber