Vra

Hoe doen jy dit afskakel autocomplete in die groot blaaiers vir'n spesifieke input (of form field)?

Was dit nuttig?

Oplossing

Firefox 30 ignoreer autocomplete="off" vir wagwoorde, kies om die gebruiker in plaas of die wagwoord moet gestoor word op die kliënt gevra. Let op die volgende kommentaar van 5 Mei 2014:

  
      
  • Die wagwoord bestuurder altyd vra as dit wil 'n wagwoord te red. Wagwoorde is nie gered word sonder die toestemming van die gebruiker.
  •   
  • Ons is die derde leser om hierdie verandering te implementeer, nadat IE en Chrome.
  •   

Volgens die dokumentasie Mozilla Developer Network , die Boole vorm element skryf autocomplete verhoed vorm data uit word die kas in ouer blaaiers.

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

Ander wenke

In bykomend tot autocomplete=off, kan jy ook jou vorm velde name word ewekansige deur die kode wat die bladsy genereer, miskien deur die toevoeging van 'n paar sessie-spesifieke string na die einde van die name.

Wanneer die vorm ingedien word, kan jy stroop wat deel af voor die verwerking van hulle op die bediener kant. Dit sal verhoed dat die webblaaier van die vind van konteks vir jou veld en ook kan help voorkom XSRF aanvalle omdat 'n aanvaller nie in staat sou wees om die veldname raai vir 'n vorm voorlegging.

Die meeste van die groot implementeer en wagwoord bestuurders (korrek, IMHO) nou ignoreer autocomplete=off.

Hoekom? Baie banke en ander "hoë sekuriteit" webtuistes bygevoeg autocomplete=off om hul login bladsye "vir sekuriteit doeleindes", maar dit verminder eintlik sekuriteit, aangesien dit mense laat die wagwoorde op hierdie hoë-sekuriteit webwerwe verander maklik om te onthou (en dus kraak) te wees, aangesien outomaties is afgebreek.

Lank gelede mees wagwoord bestuurders begin ignoreer autocomplete=off, en nou die blaaier begin om dieselfde te doen vir gebruikersnaam / wagwoord insette net.

Ongelukkig foute in die outomaties implementering voeg gebruikersnaam en / of wagwoord inligting in onvanpas vorm velde, wat veroorsaak dat vorm validasiefoute, of erger nog, per ongeluk die inbring van gebruikers in velde wat doelbewus leeg gelaat deur die gebruiker.

Wat is 'n web-ontwikkelaar om te doen?

  • As jy al wagwoord velde op 'n bladsy kan hou deur hulself, dit is 'n goeie begin as dit blyk dat die teenwoordigheid van 'n wagwoord veld is die belangrikste oorsaak van gebruiker / slaag outomaties in te skop. Andersins, lees onder die wenke.
  • Safari Kennisgewings dat daar 2 wagwoord velde en versper outomaties in hierdie geval, die veronderstelling dat dit moet 'n verandering wagwoord vorm, nie 'n login vorm wees. So net seker wees om 2 wagwoord velde (nuwe en bevestig nuwe) gebruik vir enige vorm waar jy toelaat
  • Chrome 34, ongelukkig, sal probeer om velde outomaties invul met gebruikers / slaag wanneer dit 'n wagwoord veld sien. Dit is nogal 'n slegte fout wat hopelik sal hulle die Safari gedrag te verander. Maar die toevoeging van hierdie om die top van jou vorm lyk die wagwoord outo skakel:

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

Ek het nog nie ondersoek Internet Explorer of Firefox deeglik maar sal bly wees om die antwoord te werk as ander het inligting in die kommentaar.

Soms nog outomaties = af sal nie verhoed om in geloofsbriewe vul in verkeerde rigtings, maar nie gebruiker of bynaam veld.

Dit tydelike oplossing is bykomend tot post apinstein se oor die leser gedrag.

fix leser outo in read-only en stel skryfbare op fokus (klik en blad)

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

Update: Mobile Safari stel wyser in die veld, maar nie virtuele sleutelbord te wys. Nuwe Fix werk soos voorheen, maar hanteer virtuele sleutelbord:

<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();  }" />

Live Demo https://jsfiddle.net/danielsuess/n0scguv6/

// UpdateEnd

As gevolg Browser motor vul geloofsbriewe aan verkeerde teks veld!?

Ek sien hierdie vreemde gedrag op Chrome en Safari, wanneer daar wagwoord velde in dieselfde vorm. Ek dink, die leser lyk vir 'n wagwoord veld om jou gered geloofsbriewe in te voeg. Dan is dit die motor vul (net raai as gevolg van waarneming) die naaste textlike-invoer veld, wat voor die wagwoord veld in DOM verskyn. As die leser is die laaste instansie en jy kan dit nie beheer nie,

Dit leesalleen-los bo vir my gewerk het.

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

Dit sal werk in Internet Explorer en Mozilla Firefox, die nadeel is dat dit nie XHTML standaard.

Die oplossing vir Chrome is om autocomplete="new-password" voeg tot die insette tipe wagwoord.

Voorbeeld:

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

Chrome die data outomaties in altyd as dit 'n boks van bevind tipe wagwoord , net genoeg om aan te dui vir daardie boks autocomplete = "new-password".

  

Dit werk goed vir my.

Let wel: Maak seker met F12 dat jou veranderinge in werking tree, baie keer blaaier red die bladsy in die kas, dit het my 'n slegte indruk dat dit nie gewerk het nie, maar die leser het nie eintlik die veranderinge bring

.

Soos ander het gesê, die antwoord is autocomplete="off"

Maar ek dink dit is die moeite werd vermelding Hoekom dis 'n goeie idee om dit te gebruik in sekere gevalle as 'n paar antwoorde op hierdie en dupliseer vrae het voorgestel dit is beter om nie uit te skakel.

Stop blaaier stoor kredietkaart nommers moet nie gelaat word om gebruikers. Te veel gebruikers sal nie eens besef dit is 'n probleem.

Dit is veral belangrik om dit af te skakel op velde vir kredietkaart sekuriteit kodes. As hierdie bladsy state:

  

"slaan nooit die sekuriteit's kode ... die waarde daarvan hang af van die vermoede dat die enigste manier om te voorsien dit is om dit te lees van die fisiese kredietkaart, om te bewys dat die persoon die verskaffing van dit eintlik hou van die kaart."

Die probleem is, as dit 'n publieke rekenaar (cyber café, biblioteek ens) is dit dan maklik vir ander gebruikers om jou kaartbesonderhede steel, en selfs op jou eie masjien 'n kwaadwillige webwerf kan steel outomaties data .

Ek sal moet bedel om te verskil met die antwoorde wat sê om te verhoed dat die aanskakel van die motor-volledige.

Die eerste ding om te bring, is dat die motor-volledige nie uitdruklik afgeskakel op login vorm velde is 'n PCI-DSS misluk. Verder, as die plaaslike masjien 'n gebruikers dan in die gedrang kom nie outomaties data kan trivially verkry deur 'n aanvaller te danke aan dit gestoor word in die helder.

Daar is beslis 'n argument vir bruikbaarheid, maar daar is 'n baie fyn balans wanneer dit kom by watter vorm velde outomaties afgeskakel moet hê en wat moet nie.

Drie opsies: Eerste:

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

Tweede:

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

Derde (JavaScript-kode):

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

Ek het die eindelose stryd met Google Chrome met die gebruik van ewekansige karakters opgelos. Wanneer jy altyd maak outomaties met 'n arbitrêre string, sal dit nooit enigiets onthou.

<input name="name" type="text" autocomplete="rutjfkde">

Hoop dat dit sal help om ander mense.

Op 'n verwante of eintlik, op die heeltemal teenoorgestelde noot -

  

"As jy die gebruiker van die bogenoemde vorm is en wil heraktiveer   die outomaties funksie, gebruik die "onthou wagwoord"   boekmerkie van hierdie bookmark   bladsy . dit verwyder   al autocomplete="off" eienskappe van alle vorme van die bladsy. hou   die goeie stryd! "

Ons het eintlik gebruik sasbse idee vir een site.Dit was'n mediese sagteware web app uit te voer'n dokter se kantoor.Egter, baie van ons kliënte is chirurge wat gebruik word om baie van die verskillende werkstasies, insluitende semi-openbare terminale.So, hulle wou om seker te maak dat'n dokter wat nie verstaan die implikasie van die motor-gered wagwoorde of nie aandag kan nie per ongeluk laat hul login inligting maklik toeganklik.Natuurlik, dit was voor die idee van private blaai-dit is begin om te verskyn in IE8, FF3.1, ens.Selfs so, baie dokters is gedwing om te gebruik ou skool blaaiers in hospitale met DIT wat sal nie verander nie.

So, ons het die aanmelding bladsy genereer ewekansige veld name wat sal slegs werk vir die post.Ja, dit is minder gerieflik, maar dit is net slaan die gebruiker oor die kop oor nie stoor login inligting op openbare terminale.

Just stel autocomplete="off". Daar is 'n baie goeie rede om dit te doen: Jy wil jou eie outomaties funksionaliteit verskaf

Ek het probeer eindelose oplossings, en dan het ek dit:

In plaas van autocomplete="off" net eenvoudig te gebruik autocomplete="false"

As eenvoudig soos dit, en dit werk soos 'n bom in Google Chrome sowel!

Ek dink autocomplete=off ondersteun in HTML 5.

Vra jouself hoekom jy hierdie al doen -. Dit kan sin maak in sommige gevalle, maar dit nie doen nie net ter wille van om dit te doen

Dit is minder gerieflik vir gebruikers en nie eens 'n sekuriteit probleem in OS X (deur onder Soren genoem). As jy bekommerd is oor mense wat hul wagwoorde afstand gesteel -. 'N aanslag logger kan nog steeds doen dit al is jou program' autcomplete=off

As 'n gebruiker wat kies om 'n leser te onthou (die meeste van) my inligting, ek sal dit vind irriterende as jou site myn het nie onthou.

Nie een van die oplossings vir my gewerk het in hierdie gesprek.

Ek het uiteindelik uitgepluis het 'n pure HTML oplossing wat vereis nie Javascript , werk in moderne blaaiers (behalwe IE;? Daar moes minstens 1 vang, regs), en is dit nie nodig om outomaties vir die hele vorm te skakel.

draai eenvoudig af outomaties op die form en draai dit dan vir enige input jy wil dit om te werk binne die vorm. Byvoorbeeld:

<form autocomplete="off">
    <!-- these inputs will not allow autocomplete and chrome 
         won't highlight them yellow! -->
    <input name="username"  />
    <input name="password" type="password" />
    <!-- this field will allow autocomplete to work even 
         though we've disabled it on the form -->
    <input name="another_field" autocomplete="on" />
</form>

'n nie-standaard manier om dit te doen (ek dink Mozilla en Internet Explorer ondersteun dit nog) maar geknoei met die gebruikers verwagtinge is 'n slegte idee.

As die gebruiker hul kredietkaart besonderhede ingaan in 'n vorm en dan kom ons iemand anders gebruik wat die leser dit is nie jou kommer. :)

Dit werk vir my.

<input name="pass" type="password" autocomplete="new-password" />

Ons kan ook hierdie strategie gebruik in ander beheermaatreëls soos teks, kies ens

'n bietjie laat om die spel ... maar ek het net gehardloop in hierdie probleem en probeer 'n paar mislukkings, maar hierdie een werk vir my gevind op MDN

  

In sommige gevalle, sal die leser hou wat daarop dui outomatiese aanvulling waardes   selfs al is die outomaties kenmerk is afgeskakel. hierdie onverwagse   gedrag kan nogal verwarrend vir ontwikkelaars. Die truuk om werklik   dwing die no-voltooiing is om 'n ewekansige string toewys aan die kenmerk   soos so:

autocomplete="nope"

Die beste oplossing:

Voorkom outomaties gebruikersnaam (of e-pos) wagwoord:

<input type="email" name="email"><!-- Can be type="text" -->
<input type="password" name="password" autocomplete="new-password">

Voorkom outomaties in 'n veld:

<input type="text" name="field" autocomplete="nope">

Verduideliking: autocomplete steeds werk in <input>, beteken autocomplete="off" nie werk nie, maar jy kan off verander na 'n ewekansige string, soos nope.

Werk in:

  • Chrome: 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 en 64

  • Firefox: 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 en 58

Die toevoeging van die

autocomplete="off"

om die vorm tag sal die leser outomaties (wat voorheen getik in daardie veld) uit alle input velde binne daardie spesifieke vorm te skakel.

Getoets op:

  • Firefox 3.5, 4 BETA
  • Internet Explorer 8
  • Chrome

Probeer om by te voeg

  

leesalleen onfocus = "this.removeAttribute ( 'readonly');"

bykomend tot

  

outomaties = "af"

om die insette (s) wat jy nie wil hê om vorm data (username, password, ens) onthou soos hieronder getoon:

<input type="text" name="UserName" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" >

<input type="password" name="Password" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" >

Update: Hier is vol voorbeeld hieronder gebaseer op die benadering wat verhoed drag & drop , afskrif , plak , ens.

<input type="text" name="UserName" style="text-transform:lowercase;" placeholder="Username" 
    autocomplete="off" readonly onfocus="this.removeAttribute('readonly');" 
    oncopy="return false" ondrag="return false" ondrop="return false" 
    onpaste="return false" oncontextmenu="return false" > 

<input type="password" name="Password" placeholder="Password" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" oncopy="return false" ondrag="return false" 
    ondrop="return false" onpaste="return false" oncontextmenu="return false" >

getoets op die nuutste weergawes van die groot implementeer maw Google Chrome, Mozilla Firefox, Microsoft Edge, ens en werk sonder enige probleem. Hoop dit help ...

Gebruik 'n nie-standaard naam en ID vir die velde, so eerder as "naam" het "name_". Browsers sal dan dit nie sien as die naam veld. Die beste deel oor dit is dat jy dit kan doen om 'n paar, maar nie al die velde en dit sal 'n paar, maar nie al die velde outomaties in.

Met die oog op die ongeldig XHTML vermy jy kan hierdie kenmerk stel met behulp van JavaScript. Byvoorbeeld die gebruik van jQuery:

<input type="text" class="noAutoComplete" ... />

$(function() {
    $('.noAutoComplete').attr('autocomplete', 'off');
});

Die probleem is dat gebruikers sonder JavaScript sal doen kry die outomaties funksionaliteit.

Voeg autocomplete="off" is nie gonna cut dit.

Verandering insette tipe kenmerk om type="search".
Google is nie van toepassing motor-vul om insette met 'n tipe van soek.

Probeer hierdie te as net autocomplete="off" nie werk nie:

autocorrect="off" autocapitalize="off" autocomplete="off"

Ek kan nie glo dit is nog steeds 'n probleem so lank nadat dit aangemeld. Bogenoemde oplossings nie werk vir my, as safari lyk om te weet wanneer die element nie vertoon of off-skerm, maar die volgende het werk vir my:

<div style="height:0px; overflow:hidden; ">
  Username <input type="text" name="fake_safari_username" >
  Password <input type="password" name="fake_safari_password">
</div>

Hoop dit is nuttig vir iemand!

Dit is 'n sekuriteit probleem wat implementeer ignoreer nou. Browsers identifiseer en winkels inhoud met behulp van insette name, selfs al is ontwikkelaars oorweeg die inligting is sensitief en moet nie gestoor word. Maak 'n inset naam verskillende tussen 2 versoeke sal die probleem op te los (maar sal steeds in die kas leser se gered word en sal ook verhoog kas leser se). Vra die gebruiker om te aktiveer of opsies in instellings se sy leser deaktiveer is nie 'n goeie oplossing. Die probleem kan in die agterkant vas te stel.

Hier is my fix. 'N benadering wat ek in my raamwerk geïmplementeer. Alle outomaties elemente gegenereer met 'n versteekte insette soos volg:

<? $r = rmd5(rand().mocrotime(TRUE)); ?>
<form method="POST" action="./">
    <input type="text" name="<? echo $r; ?>" />
    <input type="hidden" name="__autocomplete_fix_<? echo $r; ?>" value="username" />
    <input type="submit" name="submit" value="submit" />
</form>

Server dan proses post veranderlikes soos volg:

foreach ($_POST as $key => $val)
{
    if(preg_match('#^__autocomplete_fix_#', $key) === 1){
        $n = substr($key, 19);
        if(isset($_POST[$n]))$_POST[$val] = $_POST[$n];
    }
}

Die waarde kan verkry word soos gewoonlik

var_dump($_POST['username']);

En die leser sal nie in staat wees om inligting voor te stel van die vorige versoek of uit vorige gebruikers.

Alle werke soos 'n bom, selfs al blaaier updates, wil outomaties nie ignoreer of. Wat die beste manier om die probleem op te los vir my gewees.

Nie een van die wat hier genoem word gewerk vir my in Chrome hacks. Daar is 'n bespreking van die kwessie hier: https://code.google com / p / chroom / kwessies / detail? id = 468153 # C41

Voeg hierdie binne 'n <form> werke (ten minste vir nou):

<div style="display: none;">
    <input type="text" id="PreventChromeAutocomplete" name="PreventChromeAutocomplete" autocomplete="address-level4" />
</div>

So hier is dit:

function turnOnPasswordStyle() {
  $('#inputpassword').attr('type', "password");
}
<input oninput="turnOnPasswordStyle()" id="inputpassword" type="text">

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top