Soru Web form alanı / giriş etiketinde tarayıcı Otomatik Tamamlama özelliğini nasıl devre dışı bırakırsınız?


Nasıl devre dışı bırakırsın autocomplete belirli bir tarayıcı için input (veya form field)?


2260
2017-08-05 16:22


Menşei


Bir başka kullanım, kullanıcıları oluşturmak veya düzenlemek için yönetim formlarını içerir; formun mevcut kimlik bilgilerinizle önceden doldurulmasını istemezsiniz. Bu, şifre değiştirme formları için de geçerlidir. olarak tasarlanmış olanlar Mevcut şifreyi tutmak için boş bırakın. - Álvaro González
Bunu yapmak istediğiniz başka bir sebep ise şifre, captcha ve kredi kartı bilgilerinin doldurulmamasıdır. - Jeff Atwood
Ayrıca bazı penetrasyon testlerinin belirli alanlarda otomatik tamamlamanın devre dışı bırakılmasını gerektirdiğini de unutmayın - Jeff Atwood
Lütfen bunu dikkatlice düşün. Kredi kartı bilgilerinizi kaydetmeyi devre dışı bırakmak vb. Önemlidir, ancak bir banka değilseniz, parola otomatik doldurma özelliğini engellemek, özellikle kullanıcıların sıkışık klavye üzerinde parola girmesinin çok çaba sarf ettiği telefonlarda sitenize giriş yapmak için ne kadar çok kullanıcıyı rahatsız ettiklerini önemli ölçüde azaltabilir. - John Mellor
Diğer durumlarda, kullanıcı yönetimi formlarında olduğu gibi, kullanıcı ekleyerek / güncellerken gerçekten geçerli bir şey olabilir - büyük bir sistemde kullanıcı setini yönetirken neredeyse hiç otomatik olarak şifrelerin tamamlanmasını istemezsiniz. - Dave Amphlett


Cevaplar:


Firefox 30 yok sayar autocomplete="off" Parolalar için, kullanıcının istemcideki parolanın saklanıp saklanmayacağı sorulur. Aşağıdakilere dikkat et yorum 5 Mayıs 2014'ten itibaren:

  • Şifre yöneticisi her zaman bir şifre kaydetmek istiyorsa ister. Şifreler kullanıcı izni olmadan kaydedilmez.
  • IE ve Chrome'dan sonra bu değişikliği gerçekleştiren üçüncü tarayıcıyız.

Göre Mozilla geliştirici belgeleri form öğesi özniteliği autocomplete Form verilerinin eski tarayıcılarda önbelleğe alınmasını engeller.

<input type="text" name="foo" autocomplete="off" />

2219
2017-08-05 16:24



Bu, Firefox 3.0.3'te benim için çalışmadı. Otomatik tamamlama özniteliğini INPUT yerine FORM'e koymam gerekiyordu. - Winston Fassett
Otomatik Tamamlama yalnızca HTML 5 standartlarında tanımlanmıştır, bu nedenle HTML 4'e karşı çalıştırdığınız doğrulamaları kesecektir. * ... - Jrgns
@Winston, hem form hem de giriş elemanının kendi üzerine koymalısınız. Bu şekilde tüm standart olmayan tarayıcıları kapsarsınız. - AviD
Ve şunu devre dışı bırakmayı unutma otomatik tamamlama = açık Web sunucunuzu test etmeden önce (Chrome kullanıyorsanız) uzantı. Else benim gibi aptalca hissedeceksin. ;) - Jo Liss
autocomplete = "<açık veya kapalı olan herhangi bir şey>" - swapab


Ek olarak autocomplete=offAyrıca, form alan adlarının, sayfayı oluşturan kod tarafından, belki de adların sonuna kadar oturuma özgü bir dizenin eklenmesiyle rasgele hale getirilmiş olabilir.

Form gönderildiğinde, sunucu tarafında işlenmeden önce bu bölümü kesebilirsiniz. Bu, web tarayıcısının alanınız için bir bağlam bulmasını engeller ve aynı zamanda XSRF saldırılarını önlemeye yardımcı olabilir, çünkü bir saldırgan form gönderimi için alan adlarını tahmin edemez.


248
2017-10-20 13:36



Bu, autocomplete = "kapalı" kullanımına kıyasla çok daha iyi bir çözümdür. Tek yapmanız gereken, her sayfa yüklemesinde yeni bir ad oluşturmak ve bu adı gelecekteki kullanım için $ _SESSION olarak kaydetmek: $_SESSION['codefield_name'] = md5(uniqid('auth', true)); - enchance
Hayır, bu daha iyi bir çözüm değildir, çünkü bu ayar için tercihin kaynağı, web tarayıcısı olarak da bilinen kullanıcı aracısıdır. Belirli davranışları destekleme (HTML 5'in yapmaya çalıştığı) ile kullanıcı adına karar vererek zorlamak arasında bir fark vardır, ki bu sizin “çok daha iyi bir çözüm” olduğunu öneriyor. - amn
Bu çözüm tüm tarayıcılarla çalışabilir, bu nedenle bu "daha iyi" olur. Yine de, amn doğru, kullanıcılarınızın adına otomatik tamamlamayı devre dışı bırakmaya karar vermek iyi bir fikir değil. Bu, otomatik tamamlama işlevini yalnızca kendi otomatik tamamlama işlevlerinizi oluşturmayı planladığınızda ve çakışmaları veya garip davranışları istemediğinizde olduğu gibi çok özel durumlarda devre dışı bırakacağım anlamına gelir. - macguru2000
XSRF saldırıları ile ilgili olarak, ne tür bir saldırı yaptığınızdan emin değilim, ancak saldırganın alan kısmını tanımlamak için sunucu tarafında yaptığınız gibi son parçayı kesmesi mümkün değil miydi? Ya da saldırgan alanları gönderiyorsa, sunucu tarafından soyulacağı için kendi rastgele dizelerini ekleyemezler mi? - xr280xr
Kendi otomatik tamamlayıcısını oluşturan @ macguru2000 tamamen yasal ve ortak kullanım durumudur. Gerçekten de tarayıcı, geliştiricilerin, bu gibi saldırıları kullanmamıza zorlamak yerine, ihtiyaç duyduklarında otomatik tamamlamayı kapatmasını kolaylaştırmalı. - whoadave


Büyük tarayıcıların ve şifre yöneticilerinin çoğu (IMHO) şimdi görmezden geliyor autocomplete=off.

Niye ya? Birçok banka ve diğer "yüksek güvenlikli" web siteleri eklendi autocomplete=off giriş sayfaları için "güvenlik amaçlı" ancak bu aslında güvenliği azaltıyor çünkü insanlar bu yüksek güvenlikli sitelerde parolaları değiştirmeye neden oluyor, çünkü otomatik tamamlama bozulduğu için hatırlanması kolay (ve dolayısıyla çatlıyor).

Uzun zaman önce çoğu şifre yöneticisi göz ardı etmeye başladı autocomplete=offve şimdi tarayıcılar sadece kullanıcı adı / şifre girişi için aynı şeyi yapmaya başlıyor.

Ne yazık ki, otomatik tamamlama uygulamalarındaki hatalar kullanıcı adı ve / veya şifre bilgisini uygunsuz form alanlarına girerek, form doğrulama hatalarına neden oluyor ya da daha da kötüsü kullanıcı isimlerini kullanıcı tarafından bilerek boş bırakılan alanlara yanlışlıkla eklemektedir.

Bir web geliştiricisi ne yapmalı?

  • Tüm parola alanlarını tek başına bir sayfada tutabiliyorsanız, bir parola alanının varlığının kullanıcı / pass otomatik tamamlamasının ana tetikleyicisi olduğu görülüyorsa, bu harika bir başlangıçtır. Aksi halde aşağıdaki ipuçlarını okuyun.
  • Safari 2 parola alanı olduğunu ve bu durumda otomatik tamamlamayı devre dışı bıraktığını, bir giriş formu değil, bir parola değişikliği formu olması gerektiğini varsayar. Bu nedenle, izin verdiğiniz tüm formlar için 2 şifre alanı (yeni ve yeni onaylama) kullandığınızdan emin olun.
  • Krom 34, maalesef, bir şifre alanı gördüğünde alanları kullanıcı / pass ile otomatik doldurmaya çalışacaktır. Bu, umarım ki, Safari davranışını değiştirecek oldukça kötü bir hatadır. Ancak, bunu formunuzun en üstüne eklediğinizde şifre otomatik doldurma özelliği devre dışı kalır:

    <input type="text" style="display:none">
    <input type="password" style="display:none">
    

Henüz IE veya Firefox'u henüz incelemedim, ancak diğerlerinin yorumları hakkında bilgi sahibi olması durumunda cevabı güncellemekten memnun olurum.


187
2018-04-23 04:00



"Bunu sayfanıza eklemeniz, sayfa için otomatik doldurmayı devre dışı bırakıyor gibi görünüyor" ile ne demek istiyorsunuz? - wutzebaer
@wutzebaer, Chrome gizli şifre alanını fark eder ve otomatik tamamlamayı durdurur. Bildirildiğine göre, bu site kullanıcının fark etmeden şifre bilgisini çalmasını önlemektir. - David W
Kod snippet'iniz Chrome, Firefox, IE 8 ve IE 10'daki giriş alanları için otomatik tamamlamaları engeller. IE 11'i test etmediniz. İyi şeyler! Hala işe yarayan basit bir cevap. - Sam Watkins
Safari notunuz da en azından Aralık 2015 itibarıyla Chrome'da çalışıyor gibi görünüyor. Giriş formundaki verilerle otomatik olarak tamamlanan bir kayıt formunda bir kullanıcı adı ve şifre alanı vardı. İki oluşturma type='password' Bir sayfadaki alanlar, tarayıcının "kaydetme şifresi" otomatik olarak yok sayılmasına neden oldu. Bu, kayıt formlarının yalnızca bir kez sorduğunda kayıt formları iki kez şifre sorma eğilimi gösterdiğinden tam anlamıyla bir yük oluşturdu. - Matt Fletcher
İlave şifre alanı gizlenmediği sürece Chrome 55'te artık işe yaramıyor. - jokkedk


Ara sıra otomatik tamamlama bile kapalı = olur doldurmayı engellememek Kimlik bilgileri yanlış alanlara, ancak kullanıcı veya takma ad alanına değil.

Bu geçici çözüm, apinstein'ın tarayıcı davranışı ile ilgili mesajına ek olarak verilmiştir.

tarayıcı otomatik doldurmayı salt okunur olarak ayarla ve odakta yazılabilir olarak ayarla (tıklama ve sekme)

 <input type="password" readonly  
     onfocus="this.removeAttribute('readonly');"/>

Güncelleştirme: Mobile Safari, imleci alana ayarlar, ancak sanal klavyeyi göstermez. Yeni Düzeltme, daha önce olduğu gibi çalışır, ancak sanal klavyeyi kullanır:

<input id="email" readonly type="email" onfocus="if (this.hasAttribute('readonly')) {
    this.removeAttribute('readonly');
    // fix for mobile safari to show virtual keyboard
    this.blur();    this.focus();  }" />

Canlı Demo https://jsfiddle.net/danielsuess/n0scguv6/

// UpdateEnd

Tarayıcı otomatik kimlik bilgilerini yanlış metin alanına doldurur !?

Parola alanları olduğunda Chrome ve Safari'deki bu garip davranışı fark ediyorum. aynı form. Tarayıcı, kayıtlı kimlik bilgilerinizi eklemek için bir şifre alanı arar. Daha sonra, DOM'daki parola alanından önce görünen en yakın metin benzeri giriş alanını otomatik olarak doldurur (yalnızca gözlem nedeniyle tahmin eder). Tarayıcı son örnek olarak ve siz onu kontrol edemezsiniz.

Yukarıdaki bu düzeltmeler benim için çalıştı.


120
2018-06-16 16:04



Bir javascript yoksa, tüm form başarısız olur. -1 - Jimmy Kane
@JimmyKane anahtarı da ilk olarak javascript kullanarak özniteliği eklemek olacaktır (burada dsuess yapmadı, ama sadece tamamlama için ekleyerek). - trnelson
@tmelson anlıyorum ama hala js bile devre dışı bırakmak için kullanın? Doğal olarak geliştirilebilecek şeyler için js'den kaçınalım. Yine de sana katılıyorum. - Jimmy Kane
Bu, IE8'de doğru çalışmıyor, salt okuma ve tekrar odaklanmanızdan sonra, salt şifre alanı, odaklandığınız ilk anda düzenlenebilir değil. Güzel fikir, ama maalesef biraz fazla hacky ve kullanmak için güvenli değil. - Sam Watkins
Bu yapar değil tüm tarayıcılarda doğru çalışır (ör. IE 11 ve IE Edge). En kısa sürede readonly kaldırılır, alanın sonraki seçimi otomatik tamamlamada sonuçlanır. - Gone Coding


<form name="form1" id="form1" method="post" 
      autocomplete="off" action="http://www.example.com/form.cgi">

Bu, Internet Explorer ve Mozilla FireFox'ta çalışacak, olumsuz XHTML standardı değil.


93
2017-08-05 16:27



Bunu, form öğesine eklemenin, formdaki bireysel girdilere uygulanmasını her zaman engellemediğini fark ettim. Bu nedenle, onu doğrudan giriş elemanına yerleştirmek en iyisidir. - sholsinger
Aslında @sholsinger, hem form üzerinde hem de giriş elemanının kendisinin üzerine koymak en iyisidir. Bu şekilde tüm standart olmayan tarayıcıları kapsarsınız. - AviD
Ne yazık ki, IE 11'den itibaren, Microsoft bundan böyle buna saygı duymuyor. input type="password". Umarım başka hiçbir tarayıcı bu işlevi kaldırmayı seçmez. - SamHuckaby
Ayar autocomplete="off" üzerinde form Chrome için çalışan tek şey. - Andrew


Chrome için çözüm eklemek autocomplete="new-password" giriş tipi şifresine

Örnek:

<form name="myForm"" method="post">
<input name="user" type="text" />
<input name="pass" type="password" autocomplete="new-password" />
<input type="submit">
</form>

Bir kutu bulduğunda Chrome her zaman verileri otomatik olarak tamamlar şifreyi yaz, sadece bu kutu için belirtecek kadar autocomplete = "new-password".

Bu benim için iyi çalışıyor.

Not: Değişikliklerin etkili olacağı F12'den emin olun, çoğu zaman tarayıcılar sayfayı önbellekte saklar, bu bana işe yaramazsa kötü bir izlenim bıraktı, ancak tarayıcı aslında değişiklikleri getirmedi.


57
2017-11-24 17:07



Bu, Chrome'da, yalnızca type = "password" değil, diğer alan türleri için de çalışır. - Jake
Parola, e-posta ve metin türleriyle kullandım ve işe yaradı. Ben bunu basitçe kullandım: autocomplete = "new" - Crak_mboutin
V63 krom için çalışmıyor - Palaniichuk Dmytro


Diğerleri dediği gibi, cevap autocomplete="off"

Ancak, bence belirtmek gerekir niye ya Bunu bazı durumlarda buna cevap olarak kullanmak iyi bir fikirdir. çift sorular onu kapatmamak için daha iyi olduğunu öne sürdü.

Kredi kartı numaralarını saklayan tarayıcıları durdurmak kullanıcılara bırakılmamalıdır. Çok fazla kullanıcı bir problem olduğunu bile fark etmeyecek.

Kredi kartı güvenlik kodları için alanları kapatmak özellikle önemlidir. Gibi bu sayfa devletler:

"Güvenlik kodunu asla saklamayın ... değeri, bunu sağlamanın tek yolunun onu fiziksel kredi kartından okumak olduğunu ve bunu tedarik eden kişinin kartı elinde tuttuğunu kanıtlamasıdır."

Sorun şu ki, eğer bir kamu bilgisayarı (siber kafe, kütüphane vb.) İse diğer kullanıcıların kart bilgilerinizi çalması daha kolaydır ve hatta kendi makinenizde kötü niyetli bir web sitesi olabilir. otomatik tamamlama verilerini çal.


53
2018-01-23 21:21



bir siteye gittiğimde ve kartımı açılırken hatırladım çok mutsuz olurdum. Kimlik, nasıl bu kadar dikkatsiz olabileceğini merak etmeye başlar. - Simon_Weaver
Çok daha basit / daha kritik bir durum. Bir kullanıcının sayfasını sitemin yönetici bölümünde ziyaret ettiğimde, kullanıcı adı ve şifremi, kullanıcı adımı ve şifremi oluşturacak şekilde ayarlamaya çalışır, bunun bir giriş formu olmadığını söyleyemem. Yönetici şifremi hatırlatmak istiyorum, ancak hatırladığım kullanıcı adı / şifreyi, daha sonra düzenlediğim kullanıcılara / şifrelere uygulamayı denemesi kritik bir hatadır. - rjmunro


Otomatik tamamlamayı devre dışı bırakmaktan kaçınmak için söylenen cevaplardan farklı olmak için yalvarıyorum.

Ortaya çıkan ilk şey, oturum açma form alanlarında açıkça devre dışı bırakılmayan otomatik tamamlamanın bir PCI-DSS başarısız olmasıdır. Ayrıca, bir kullanıcının yerel makinesinin güvenliği ihlal edilirse, otomatik tamamlama verileri, bir saldırgan tarafından açık bir şekilde saklanmasından dolayı önemsiz olarak elde edilebilir.

Kullanılabilirlik için kesinlikle bir argüman vardır, ancak hangi form alanlarının otomatik tamamlama devre dışı bırakılması gerektiği ve olmaması gereken çok ince bir denge vardır.


29
2017-09-17 00:33



AutoComplete kullanarak bir metin girişi doldurduğunuzda IE'nin olayları tetiklemediği dikkatimi çekti. Her birinde dağılmış düzinelerce form ve binin üzerinde Değişim etkinliği (giriş doğrulamaları, iş mantığı) var. Son zamanlarda IE'yi daha yeni bir sürüme geçirdik ve ani bir tuhaf şeyler olmaya başladı. Neyse ki bir intranet uygulaması kullanıyoruz ve otomatik tamamlama bizim için bir UX sorunu değil, sadece kapatmak için daha kolay. - Robotron
Bir kullanıcı yerel makine tehlikeye düşerse, onlar vidalanır, dönem. Bir keylogger yüklü olabilir, sahte bir SSL kök sertifikası eklenmiş olabilir ve yanlış proxy ile gönderilen her şey vs. olabilir. Otomatik tamamlamayı devre dışı bırakmam için gerçek bir nedenim var - Bir yönetici olarak giriş yaptığımda ve kullanıcı sayfasını düzenle seçeneğini ziyaret ettiğimde Bu kullanıcı benim admin kullanıcı adı ve şifremi. Bu davranışı engellemem gerek. - rjmunro
Tarayıcı satıcıları kendi ilgi alanlarına bakıyor gibi görünüyor. Kayıtlı şifreler = kullanıcı kilitleme. Ve otomatik tamamlama açık / kapalı çok basitti - neden karmaşık anlamsal bir karmaşık standart değil ( html.spec.whatwg.org/multipage/... ) Bu arada, tarayıcının her bir kullanıcının ziyaret ettiği sitelerden değerli semantik veriler toplamasına izin veren nedir? - aro_tech
Çözmeyi denediğim özel kullanım durumu şudur: zaten giriş yapmışlar ama şimdi daha hassas bir şeye erişmek üzereler. Onları yeniden doğrulayan bir diyalog göstermek istiyorum, onların bir sigara içmek ve kötü bir insanın sandalyelerinde oturması ihtimaline karşı. Otomatik Tamamlama'yı yenmek için birkaç teknik denediniz ve hiçbir şey işe yaramıyor. şimdi düşünüyorum, belki de en azından, eski 'password = window.prompt (şifrenizi tekrar giriniz)' 've kullanıcı adı ile oturumdaki kullanıcı adını kullanıp bunu doğrulamaya çalışıyorum. - David


Üç seçenek: İlk:

<input type='text' autocomplete='off' />

İkinci:

<form action='' autocomplete='off'>

Üçüncü (javascript kodu):

$('input').attr('autocomplete', 'off');

24
2018-03-19 10:05



Birinci ve ikinci seçenekler bir seçenek olmalıdır, çünkü tarayıcıların bunu nasıl ele aldığına göre değişir. - rybo111
$ FormElement.attr ('otomatik tamamlama', 'kapalı') denediniz; ve işe yaramıyor. - highmaintenance