Išjungti naršyklės funkciją „Išsaugoti slaptažodį“

Vienas iš darbų vyriausybės sveikatos agentūroje džiaugsmų yra spręsti visas su PHI susijusias paranoijas (saugoma sveikatos informacija). Nesupraskite manęs, aš darau viską, kas įmanoma, siekiant apsaugoti žmonių asmeninę informaciją (sveikata, finansai, banglenčių įpročiai ir tt), bet kartais žmonės tampa pernelyg nervingi.

Pavyzdys: Vienas iš mūsų vyriausybės klientų neseniai sužinojo, kad naršyklė yra patogi funkcija išsaugoti slaptažodį. Visi žinome, kad jis jau ilgą laiką ten yra ir yra visiškai neprivalomas, o galutinis vartotojas gali nuspręsti, ar tai tinkamas sprendimas, ar ne. Tačiau šiuo metu yra truputį trikdžių ir turime rasti būdą, kaip išjungti šią funkciją mūsų svetainėje.

Klausimas : Ar svetainė gali pasakyti naršyklei, kad nerekomenduoja prisiminti slaptažodžių? Ilgą laiką dirbau žiniatinklyje, tačiau nežinau, kad tai jau anksčiau.

Bet kokia pagalba yra vertinama.

399
28 авг. nustatyti mattsmith321 28 rug . 2008-08-28 17:18 '08, 17:18, 2008-08-28 17:18
@ 33 atsakymai
  • 1
  • 2

Nesu tikras, kad jis veiks visose naršyklėse, tačiau turėtumėte pabandyti nustatyti automatinį užbaigimą = "išjungti" formą.

 <form id="loginForm" action="login.cgi" method="post" autocomplete="off"> 

Paprasčiausias ir paprasčiausias būdas išjungti patarimus ir slaptažodžių saugojimą ir neleisti saugoti duomenų talpyklos sesijos istorijoje yra naudoti formos automatinio užbaigimo elemento atributą „išjungta“.

Nuo http://developer.mozilla.org/En/How_to_Turn_Off_Form_Autocompletion

Kai kurie smulkūs tyrimai rodo, kad tai veikia IE, bet nepalieku jokių garantijų;)

@Joseph : jei tai yra griežtas reikalavimas perduoti XHTML patvirtinimą tikruoju žymėjimu (aš nežinau, kodėl taip būtų), teoriškai galite pridėti šį atributą, po to palikti javascript, bet tada vartotojai su js neįgalūs (galbūt netinkamas duomenų bazės kiekis arba Nulis, jei jūsų svetainė reikalauja js, vis tiek išsaugos jūsų slaptažodžius.

„JQuery“ pavyzdys:

 $('#loginForm').attr('autocomplete', 'off'); 
317
28 авг. Markus Olsson atsakymas 28 rug. 2008-08-28 17:23 '08, 17:23, 2008-08-28 17:23

Jau kurį laiką kovojau su šia problema, su unikalia problema. Privilegijuoti naudotojai negali naudoti jiems išsaugotų slaptažodžių, tačiau įprastiems vartotojams to reikia. Tai reiškė, kad privilegijuoti naudotojai turėjo prisijungti du kartus, o antrą kartą neišsaugodami išsaugotų slaptažodžių.

Naudojant šį reikalavimą, standartinis autocomplete="off" metodas neveikia visose naršyklėse, nes slaptažodį galima išsaugoti nuo pirmojo prisijungimo. Kolega surado sprendimą pakeisti slaptažodžio lauką, kai jis buvo sutelktas nauju slaptažodžių lauku, o tada sutelkti dėmesį į naują slaptažodį (tada prijunkite tą patį įvykių tvarkyklę). Tai dirbo (išskyrus tai, kad ji sukėlė begalinę kilpą IE6). Gal tai buvo, bet tai sukėlė man migreną.

Galiausiai, aš bandžiau tiesiog įvesti naudotojo vardą ir slaptažodį ne formoje. Mano nuostabai jis dirbo! Jis dirbo IE6 ir dabartinėse „Firefox“ ir „Chrome“ versijose „Linux“. Aš to dar nebandžiau, bet manau, kad jis veikia daugumoje, jei ne visose, naršyklėse (bet nenustebčiau, jei būtų naršyklė, kuri nesirūpino, ar nėra formos).

Čia yra pavyzdinis kodas, taip pat kai kurie „jQuery“ kodai, kad jie veiktų:

 <input type="text" id="username" name="username"/> <input type="password" id="password" name="password"/> <form id="theForm" action="/your/login" method="post"> <input type="hidden" id="hiddenUsername" name="username"/> <input type="hidden" id="hiddenPassword" name="password"/> <input type="submit" value="Login"/> </form> <script type="text/javascript" > 
35
31 марта '10 в 22:10 2010-03-31 22:10 atsakė Mike Stone kovo 10 d. 10 val. 10.00 val. 2010-03-31 22:10

Na, tai yra labai senas postas, bet vis tiek duosiu savo sprendimą, kurį mano komanda bandė pasiekti ilgą laiką. Mes paprasčiausiai pridėjome naują įvesties lauką tipo = "slaptažodis" viduje formos ir suvynioti į div ir padarė div paslėptas. Įsitikinkite, kad šis divis yra prieš faktinį slaptažodį. Jis dirbo mums ir nepateikė parinkties Išsaugoti slaptažodį.

Plunk - http://plnkr.co/edit/xmBR31NQMUgUhYHBiZSg?p=preview

HTML:

 <form method="post" action="yoururl"> <div class="hidden"> <input type="password"/> </div> <input type="text" name="username" placeholder="username"/> <input type="password" name="password" placeholder="password"/> </form> 

CSS

 .hidden {display:none;} 
28
04 авг. atsakymas pateikiamas kodėlAto8 04 rugpjūtis. 2014-08-04 07:28 '14, 7:28 2014-08-04 07:28

Tiesiog naudokite

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

be to

autofill = "išjungta"

į įvestį (-as), kurios nenorite prisiminti formos duomenų ( username , password ir kt.), kaip parodyta toliau:

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

Išbandyta naujausiose pagrindinių naršyklių versijose, pvz., „ Google Chrome , „ Mozilla Firefox , „ Microsoft Edge ir kt. Ir veikia kaip žavesys. Tikiuosi, kad tai padės ...

27
18 мая '16 в 10:03 2016-05-18 10:03 atsakymą Murat Yıldız pateikė gegužės 18 d. 16 d. 10:03 2016-05-18 10:03

Galite užkirsti kelią naršyklės atitikties formoms, atsitiktinai surenkant pavadinimą, naudojamą slaptažodžio lauke kiekviename ekrane. Tada naršyklė mato to paties URL slaptažodį, tačiau negali būti tikri tuo pačiu slaptažodžiu. Gal jis valdo kažką kitą.

Atnaujinimas: atkreipkite dėmesį, kad tai turėtų būti papildoma naudojant automatinį užbaigimą ar kitą taktiką, o ne juos pakeisti kitais motyvais.

Taip pat atkreipkite dėmesį, kad tai neleis naršyklei automatiškai užpildyti slaptažodžio. Tai netrukdys jam išsaugoti slaptažodžio bet kokiu savavališko saugumo lygiu, kurį naršyklė nusprendžia naudoti.

16
28 авг. Joel Coehoorn atsakymas 28 rug . 2008-08-28 17:29 '08 at 17:29 pm 2008-08-28 17:29

Naudokite tikrąjį dviejų veiksnių autentifikavimą, kad būtų išvengta vienintelio priklausomybės nuo slaptažodžių, kuriuos galima išsaugoti daugelyje kitų vietų, išskyrus vartotojo naršyklės talpyklą.

14
19 дек. David Schmitt atsakymas 19 d 2008-12-19 13:53 '08 13:53 pm 2008-12-19 13:53

Aš išbandžiau, kad pridedant autocomplete = "off" formos žymą visose pagrindinėse naršyklėse. Iš tikrųjų, dauguma JAV žmonių iki šiol naudoja IE8.

  • IE8, IE9, IE10, „Firefox“, „Safari“ veikia gerai.

    Naršyklė nereikalauja „išsaugoti slaptažodį“. Be to, anksčiau įrašytas naudotojo vardas ir slaptažodis nebuvo užpildyti.

  • „Chrome“ ir „IE 11“ nepalaiko autocomplete = "off"
  • FF, palaikantis autocomplete = "off". bet kartais užpildomi esami išsaugoti kredencialai.

Atnaujinta 2014 m. Birželio 11 d

Galiausiai, žemiau pateikiamas kryžminės naršyklės „javascript“ sprendimas, kuris veikia gerai visose naršyklėse.

Turite pašalinti formos žymę prisijungimo formoje. Patikrinę kliento pusėje, įdėkite šiuos kredencialus paslėpta forma ir atsiųskite juos.

Taip pat pridėkite du metodus. vienas, kad patikrintumėte „validateLogin ()“, o kitas - klausytis, įveskite įvykį paspausdami įvesties mygtuką teksto laukelyje / slaptažodis / mygtukas „checkAndSubmit ()“. kadangi dabar prisijungimo formoje nėra formos žymos, todėl įveskite čia įvykį, kuris čia neveikia.

HTML

 <form id="HiddenLoginForm" action="" method="post"> <input type="hidden" name="username" id="hidden_username" /> <input type="hidden" name="password" id="hidden_password" /> </form> Username: <input type="text" name="username" id="username" onKeyPress="return checkAndSubmit(event);" /> Password: <input type="text" name="password" id="password" onKeyPress="return checkAndSubmit(event);" /> <input type="button" value="submit" onClick="return validateAndLogin();" onKeyPress="return checkAndSubmit(event);" /> 

„Javascript“

 //For validation- you can modify as you like function validateAndLogin(){ var username = document.getElementById("username"); var password = document.getElementById("password"); if(username  username.value == ''){ alert("Please enter username!"); return false; } if(password  password.value == ''){ alert("Please enter password!"); return false; } document.getElementById("hidden_username").value = username.value; document.getElementById("hidden_password").value = password.value; document.getElementById("HiddenLoginForm").submit(); } //For enter event function checkAndSubmit(e) { if (e.keyCode == 13) { validateAndLogin(); } } 

Sėkmės!

12
29 мая '14 в 10:11 2014-05-29 10:11 atsakymą davė Asikas gegužės 29 d. 14 d. 10:11 2014-05-29 10:11

Švariausias būdas yra naudoti žymės atributą autocomplete="off" , tačiau„ Firefox “tinkamai nesilaiko perjungimo autocomplete="off" .

Vienintelis būdas tai sustabdyti yra pridėti netikrą paslėptą slaptažodį lauką, dėl kurio naršyklė užpildo slaptažodį.

 <input type="text" id="username" name="username"/> <input type="password" id="prevent_autofill" autocomplete="off" style="display:none" tabindex="-1" /> <input type="password" id="password" autocomplete="off" name="password"/> 

Tai bjaurus įsilaužimas, nes keičiate naršyklės elgesį, kuris turėtų būti laikomas blogu. Naudokite jį tik tada, kai jums to reikia.

Pastaba Tai veiksmingai sustabdo slaptažodžio automatinį užbaigimą, nes FF „išsaugos“ #prevent_autofill (kuris yra tuščias) vertę ir pabandykite užpildyti visus išsaugotus slaptažodžius ten, nes jis visada naudoja pirmąjį įvesties type="password" DOM po atitinkamo įvesties „naudotojo“.

12
07 окт. atsakymas į venimus spalio 7 d 2013-10-07 14:03 '13, 14:03, 2013-10-07 14:03

Ne iš tikrųjų - vienintelis dalykas, kurį iš tikrųjų galėtumėte padaryti, yra patarimai svetainėje; Galbūt, prieš pirmą prisijungimą, galite parodyti jiems formą su informacija, rodančia, kad naršyklė neleidžia saugoti slaptažodžio.

Tuomet vartotojas nedelsdamas laikysis patarimų, užsirašys slaptažodį ant pastabos ir įklijuos jį į monitorių.

7
28 авг. Atsakyti Jason Bunting rugpjūčio 28 d 2008-08-28 17:21 '08 at 17:21 pm 2008-08-28 17:21

Ką aš padariau, buvo autocomplete = "off" ir kliringo slaptažodžio laukų derinys, naudojant javascript / jQuery.

JQuery pavyzdys:

 $(function() { $('#PasswordEdit').attr("autocomplete", "off"); setTimeout('$("#PasswordEdit").val("");', 50); }); 

Naudodami setTimeout() galite palaukti, kol naršyklė užpildys lauką prieš jį išvalydama, kitaip naršyklė automatiškai automatiškai užbaigs, kai pašalinsite lauką.

6
02 марта '10 в 1:13 2010-03-02 01:13 „ Howard Young“ atsakymą pateikė kovo 2 d. 10 d. 1:13 2010-03-02 01:13

jei autocomplete = "off" neveikia ... pašalinkite formos žymą ir vietoj to naudokite div žymę, tada perduokite formų vertes naudodami jquery serveryje. Jis dirbo man.

3
04 июля '14 в 11:59 2014-07-04 11:59 atsakymą pateikė Nikhil Dinesh liepos 14 d. 14 val. 11:59 2014-07-04 11:59

Kadangi autocomplete = "off" neveikia slaptažodžių laukuose, turite pasikliauti javascript. Čia yra paprastas sprendimas, pagrįstas čia rastais atsakymais.

Į slaptažodžio lauką pridėkite atributą „data-password-autocomplete =“ off “:

 <input type="password" data-password-autocomplete="off"> 

Įgalinkite šiuos JS:

 $(function(){ $('[data-password-autocomplete="off"]').each(function() { $(this).prop('type', 'text'); $('<input type="password"/>').hide().insertBefore(this); $(this).focus(function() { $(this).prop('type', 'password'); }); }); }); 

Šis sprendimas veikia tiek „Chrome“, tiek „FF“.

3
04 апр. atsakymas pateikiamas mfernandes 04 balandžio. 2017-04-04 14:46 '17 at 14:46 pm 2017-04-04 14:46

Tai vienintelis būdas suvokti, kad automatinio užbaigimo atributas veikia didžiąją laiko dalį, tačiau patyrę vartotojai gali jį apeiti naudodamiesi „bookmarklet“.

Jei naršyklė išsaugo slaptažodžius, iš tikrųjų padidina apsaugą nuo keyloggers, taigi galbūt saugiausias variantas yra išsaugoti slaptažodžius naršyklėje, bet apsaugoti juos pagrindiniu slaptažodžiu (bent jau „Firefox“).

2
07 февр. atsakymą pateikė Thrawn 07 vasaris. 2011-02-07 05:29 '11 at 5:29 2011-02-07 05:29

Turiu darbą, kuris gali padėti.

Galite sukurti savo šriftą. Taigi, sukurkite savo šriftą su visais simboliais, pavyzdžiui, tašku / apskritimu / žvaigždute. Naudokite tai kaip tinkintą šriftą savo svetainėje. Patikrinkite, kaip tai padaryti inkscape: kaip sukurti savo šriftą

Tada prisijungimo formoje naudokite:

 <form autocomplete='off' ...> <input type="text" name="email" ...> <input type="text" name="password" class="password" autocomplete='off' ...> <input type=submit> </form> 

Tada pridėkite „css“:

 @font-face { font-family: 'myCustomfont'; src: url('myCustomfont.eot'); src: url('myCustomfont?#iefix') format('embedded-opentype'), url('myCustomfont.woff') format('woff'), url('myCustomfont.ttf') format('truetype'), url('myCustomfont.svg#myCustomfont') format('svg'); font-weight: normal; font-style: normal; } .password { font-family:'myCustomfont'; } 

Kryžminio naršyklės suderinamumas. Bandžiau IE6 +, FF, „Safari“ ir „Chrome“. Tiesiog įsitikinkite, kad konvertuojamasis šrifto šriftas nėra sugadintas. Tikiuosi, kad tai padės?

2
25 июля '14 в 14:49 2014-07-25 14:49 atsakymą pateikė Dai Bok liepos mėn. 25 d. 14:49 2014-07-25 14:49
Marcus iškėlė didelį tašką. Nusprendžiau rasti autocomplete atributą ir gavau:

Vienintelis trūkumas naudojant šį atributą yra tas, kad jis nėra standartinis (jis veikia IE ir Mozilla naršyklėse) ir sukels XHTML patvirtinimą. Manau, kad taip yra tada, kai pagrįstai nutraukti patikrinimą. ( šaltinis )

Todėl turėčiau pasakyti, kad nors ji neveikia 100 proc., Ji tvarkoma pagrindinėse naršyklėse, todėl yra puikus sprendimas.

1
28 авг. Joseph Pecoraro atsakymas 28 rug. 2008-08-28 17:29 '08 at 17:29 pm 2008-08-28 17:29

Bandžiau autocomplete="off" aukščiau ir vis tiek nieko nepavyko. jei naudojate kampinį js, rekomenduoju eiti su mygtuku ir ng-click.

 <button type="button" class="" ng-click="vm.login()" /> 

Jis jau turi priimtą atsakymą, pridėdamas jį, jei kas nors negali išspręsti problemos priimtu atsakymu, kurį jis gali eiti su mano mechanizmu.

Dėkojame už klausimą ir atsakymus.

1
21 марта '17 в 17:15 2017-03-21 17:15 atsakymas pateikiamas ambarox kovo 21 d. 17, 17:15 2017-03-21 17:15

Mano „js“ („jquery“) problemos sprendimas yra pakeisti slaptažodžio įvesties tipą į tekstą pateikiant formą . Slaptažodis gali tapti matomas sekundę, taigi taip pat paslėpsiu įvestį prieš tai. Nenorėčiau to naudoti prisijungimo formoms , tačiau tai yra naudinga (kartu su automatiniu užbaigimu = "išjungta"), pavyzdžiui, svetainės administravimo dalyje.

Prieš pateikdami formą, pabandykite įdėti jį į konsolę (su jquery).

1
29 авг. atsakymas pateikiamas ovalek 29 rug . 2015-08-29 02:49 '15, 02:49 am 2015-08-29 02:49

Paprasčiausias būdas išspręsti šią problemą yra įterpti laukus „INPUT“ už FORM žymos ir pridėti du paslėptus laukelius FORM žyma. Tada siųskite įvykio klausytoją, kol formų duomenys bus siunčiami į serverio kopijų reikšmes nuo matomos iki nematomos informacijos.

Štai pavyzdys (čia negalite paleisti, nes formos veiksmas nėra nustatytas tikruoju scenarijaus prisijungimu):

04 авг. atsakymas, kurį pateikė knee-cola 04 rug. 2015-08-04 18:54 '15 at 18:54 2015-08-04 18:54

Aš išbandžiau daugybę sprendimų. Dinaminio slaptažodžio vardo pavadinimas, keli slaptažodžio laukai (nematomi suklastoti), įvesties tipo keitimas iš „tekstas“ į „slaptažodis“, autocomplete = "išjungta", automatinis užbaigimas = "naujas slaptažodis", ... bet nieko neišsprendė iš naujausių naršyklę.

Norėdami atsikratyti slaptažodžio, nepamirškite, kad aš pagaliau apdorojau slaptažodį kaip įvesties lauką ir „neryškus“ įvestą tekstą.

Jis yra mažiau „saugus“ nei savo slaptažodžio laukas, nes atspausdinto teksto pasirinkimas parodys jį kaip aiškų tekstą, tačiau slaptažodis neprisimenamas. Tai taip pat priklauso nuo javascript aktyvinimo.

Jūs įvertinsite riziką, kad naudodamiesi žemiau pateikta parinktimi, naudodami navigatoriaus slaptažodį ir slaptažodį.

Nors vartotojas gali kontroliuoti slaptažodį (draudžiama kiekvienai svetainei), jis yra puikus asmeniniam kompiuteriui, o ne bendrinamam ar bendrinamam kompiuteriui.

Mano atveju, tai skirta ERP veikimui bendrai naudojamuose kompiuteriuose, todėl leisiu jam išbandyti savo sprendimą toliau.

 <input style="background-color: rgb(239, 179, 196); color: black; text-shadow: none;" name="password" size="10" maxlength="30" onfocus="this.value='';this.style.color='black'; this.style.textShadow='none';" onkeypress="this.style.color='transparent'; this.style.textShadow='1px 1px 6px green';" autocomplete="off" type="text"> 
1
11 апр. Atsakymas pateikiamas Cedric Simon 11 balandžio. 2017-04-11 21:39 '17 at 9:39 PM 2017-04-11 21:39

Kadangi dauguma autocomplete pasiūlymų, įskaitant priimtą atsakymą, neveikia šiuolaikinėse žiniatinklio naršyklėse (t. Y. Naršyklės slaptažodžių administratoriai ignoruoja autocomplete ), naujesnis sprendimas yra keitimasis password ir text tipais, o fono spalva atitinka teksto spalvą, kai laukas yra teksto laukas kuris toliau slėpia slaptažodį, kuris yra tikras slaptažodis, kai vartotojas (arba programa, pvz., KeePass) įveda slaptažodį. Naršyklės nereikalauja išsaugoti slaptažodžių, saugomų teksto laukuose.

Šio požiūrio privalumas yra tas, kad jis leidžia jums palaipsniui tobulėti ir todėl nereikalauja, kad laukas „Javascript“ veiktų kaip įprastas slaptažodžio laukas (taip pat galite pradėti su paprastu teksto lauku ir naudoti tą patį metodą, tačiau tai nėra tiksliai HIPAA PHI / PII suderinama). Šis požiūris nepriklauso nuo paslėptų formų / laukų, kurie gali būti siunčiami į serverį (nes jie yra paslėpti), o kai kurie iš šių triukų taip pat neveikia keliose moderniose naršyklėse.

JQuery įskiepis:

https://github.com/cubiclesoft/php-flexforms-modules/blob/master/password-manager/jquery.stoppasswordmanager.js

Atitinkamas šaltinis iš aukščiau pateiktos nuorodos:

 (function($) { $.fn.StopPasswordManager = function() { return this.each(function() { var $this = $(this); $this.addClass('no-print'); $this.attr('data-background-color', $this.css('background-color')); $this.css('background-color', $this.css('color')); $this.attr('type', 'text'); $this.attr('autocomplete', 'off'); $this.focus(function() { $this.attr('type', 'password'); $this.css('background-color', $this.attr('data-background-color')); }); $this.blur(function() { $this.css('background-color', $this.css('color')); $this.attr('type', 'text'); $this[0].selectionStart = $this[0].selectionEnd; }); $this.on('keydown', function(e) { if (e.keyCode == 13) { $this.css('background-color', $this.css('color')); $this.attr('type', 'text'); $this[0].selectionStart = $this[0].selectionEnd; } }); }); } }(jQuery)); 

Demo versija:

https://barebonescms.com/demos/admin_pack/admin.php

Spustelėkite meniu „Pridėti įrašą“, tada slinkite žemyn į „Modulis: sustabdyti slaptažodžių tvarkyklę“.

Atsakomybės apribojimas: nors šis požiūris taikomas matomiems žmonėms, gali kilti problemų su ekrano skaitytuvo programine įranga. Pavyzdžiui, ekrano skaitytuvas gali skaityti vartotojo slaptažodį, nes jis mato teksto lauką. Taip pat gali atsirasti ir kitų nenumatytų minėto papildinio naudojimo pasekmių. Įterptosios interneto naršyklės funkcionalumo keitimas turėtų būti atliekamas ekonomiškai, patikrinus įvairias sąlygas ir ekstremalius atvejus.

0
05 марта '18 в 18:35 2018-03-05 18:35 atsakymą pateikė CubicleSoft kovo 05-18 d. 18:35. 2018-03-05 18:35

Tikroji problema yra daug gilesnė nei tik pridėti atributus į HTML yra bendra saugumo problema, todėl žmonės sugalvojo aparatūros raktus ir kitus beprotiškus dalykus, kad užtikrintų saugumą.

Įsivaizduokite, kad turite autocomplete = "off", kuris veikia puikiai visose naršyklėse. Ar tai padės saugumui? Žinoma, ne. Vartotojai įrašo savo slaptažodžius vadovėliuose, ant jų monitoriaus priklijuotų lipdukų, kuriuose kiekvienas biuro lankytojas gali juos matyti, įrašyti juos į tekstinius failus darbalaukyje ir pan.

Paprastai žiniatinklio programa ir interneto kūrėjas neatsako už galutinių vartotojų saugumą. Galutiniai vartotojai gali apsaugoti tik save. Idealiu atveju, jie turi saugoti visus slaptažodžius į galvą ir naudoti slaptažodžio atkūrimo funkciją (arba susisiekti su administratoriumi), jei jie jį pamiršo. Priešingu atveju visada bus rizika, kad slaptažodis gali būti matomas ir pavogtas.