Html - як відключити автозаповнення браузера в поле веб-форми

  • Менеджер паролів завжди запитує, чи хоче він зберегти пароль. Паролі не зберігаються без дозволу користувача.
  • Ми є третім браузером для реалізації цієї зміни після IE і Chrome.

Згідно з документацією розробника Mozilla, autocomplete атрибута елемента форми запобігає кешування даних форми в старих браузерах.

На додаток до autocomplete = off ви також можете мати імена полів форм, які будуть рандомізовані кодом, який генерує сторінку, можливо, додавши деяку рядок, що відноситься до сеансу, в кінець імен. Коли форма відправлена, ви можете off цю частину перед її обробкою на стороні сервера. Це запобіжить пошук веб-браузером контексту для вашого поля, а також може допомогти запобігти атакам XSRF, тому що зловмисник не зможе вгадати імена полів для відправки форми.

Більшість основних браузерів і менеджерів паролів (правильно, IMHO) тепер ігнорують autocomplete = off.

Навіщо? Багато банків і інші сайти з високим ступенем безпеки додали autocomplete = off до своїх сторінок входу в систему «для цілей безпеки», але це фактично знижує безпеку, оскільки це змушує людей змінювати паролі на цих сайтах високої безпеки, щоб їх було легко запам'ятати (і , отже, зламати) Оскільки автозаповнення було порушено.

Давним-давно більшість менеджерів паролів почали ігнорувати autocomplete = off. і тепер браузери починають робити те ж саме тільки для введення імені користувача і пароля.

На жаль, помилки в реалізаціях автозаповнення вставляють ім'я користувача і / або пароль в неправильні поля форми, викликаючи помилки перевірки форми або, що ще гірше, випадково вставляючи імена користувачів в поля, які були навмисно залишені порожнім користувачем.

Що веб-розробник робити?

  • Якщо ви можете зберегти всі поля пароля на сторінці самостійно, це відмінний старт, так як здається, що наявність поля пароля є основним тригером для автозаповнення користувача / пароля для введення. В іншому випадку прочитайте наведені нижче поради.
  • Safari зазначає, що в цьому випадку є два поля пароля і в цьому випадку відключає автозаповнення, припускаючи, що це повинна бути форма пароля для зміни, а не форма входу в систему. Тому просто обов'язково використовуйте 2 поля пароля (нові та підтвердіть нові) для будь-яких форм, в яких ви дозволяєте

Chrome 34, на жаль, буде намагатися автоматично заповнювати поля за допомогою користувача / пароля щоразу, коли він бачить поле пароля. Це досить погана помилка, яка, сподіваюся, зміниться на поведінку Safari. Однак, додавання цього в початок вашої форми, здається, відключає автозаповнення пароля:

Це буде працювати в IE і FF, недоліком є ​​те, що він не є стандартом XHTML.

Іноді навіть autocomplete = offне заважає заповнювати облікові дані в неправильні поля, але не в поле користувача або нік.

Це обхідний рішення на додаток до повідомлення Apinstein про поведінку браузера.

Виправити автозаповнення браузера в: readonly і встановити функцію writeble on focus (клацання і вкладка)

Оновлення: Mobile Safari встановлює курсор в поле, але не показує віртуальну клавіатуру. Нове виправлення працює, як раніше, але обробляє віртуальну клавіатуру:

Тому що браузер автоматично заповнює облікові дані в неправильному текстовому полі.

Я помічаю це дивна поведінка в Chrome і Safari, коли є поля пароля в тій же формі. Я думаю, браузер шукає поле пароля для вставки збережених облікових даних. Потім він автоматично заповнює (тільки ворожіння через спостереження) найближчим текстовим полем введення, яке з'являється перед полем пароля в DOM. Оскільки браузер є останнім примірником, і ви не можете його контролювати,

Це виправлення лише для читання працювало для мене.

Як говорили інші, відповідь autocomplete = "off"

Однак я думаю, що варто сказати, чому це корисно використовувати в деяких випадках, так як деякі відповіді на це і повторювані питання припускають, що краще не повертати, якщо вимкнути.

Зупинка браузерів, що зберігають номери кредитних карт, не повинна надаватися користувачам. Занадто багато користувачів навіть не зрозуміють, що це проблема.

Особливо важливо відключити його для полів для кодів безпеки кредитних карт. Як говориться в цій сторінці

«Ніколи не зберігайте код безпеки. його значення залежить від презумпції того, що єдиний спосіб надати його - прочитати його з фізичної кредитної картки, доводячи, що людина, яка його постачає, дійсно тримає карту ».

Проблема в тому, що якщо це загальнодоступний комп'ютер (кібер-кафе, бібліотека і т. Д.), То іншим користувачам легко вкрасти дані вашої карти, і навіть на власній машині шкідливий веб-сайт може вкрасти дані автозаповнення.

Я повинен просити, щоб вони відрізнялися тими відповідями, які говорять, щоб уникнути відключення автоматичного завершення.

Перше, що потрібно зрозуміти, - це те, що автоматичне заповнення, яке явно не відключено в поля форми входу, є ознакою PCI-DSS. Крім того, якщо локальна машина користувача скомпрометована, будь-які дані автозаповнення можуть бути тривіально отримані зловмисником через те, що він зберігається в ящику.

Звичайно, є аргумент на користь зручності використання, проте є дуже тонкий баланс, коли справа доходить до того, які поля форми повинні бути відключені автозаповненням, а які ні.

Рішення для Chrome - це додати autocomplete = "new-password" до паролю типу введення.

Chrome завжди автозаполняет дані, якщо знаходить поле типу пароля. досить, щоб вказати для цього поля autocomplete = "new-password".

Це добре працює для мене.

Примітка. Переконайтеся, що зі змінами F12 ваші зміни вступили в силу, багато разів браузер зберіг сторінку в кеші, це показало мені погане враження, що вона не працює, але браузер фактично не вніс змін.

Три варіанти: спочатку:

Так просто, і це працює як шарм в Google Chrome!

Просто встановіть autocomplete = "off". Для цього є дуже вагома причина: ви хочете надати свої власні функції автозаповнення!

Відносно пов'язаного або фактично абсолютно протилежного примітки - якщо ви є користувачем вищезгаданої форми і хочете знову включити функцію автозаповнення, використовуйте кнопку «запам'ятати пароль» на цій сторінці Букмарклет. Він видаляє всі атрибути «autocomplete =" off "» з усіх форм на сторінці. Продовжуйте боротися з хорошою боротьбою!

Я думаю, що autocomplete = off підтримується в HTML 5.

Запитайте себе, чому ви хочете це зробити, хоча це може мати сенс у деяких ситуаціях, але не робіть цього тільки заради цього.

Це менш зручно для користувачів і навіть не проблема безпеки в OS X (згаданий Сореном нижче). Якщо вас турбують люди, у яких їх паролі вкрадені віддалено - реєстратор натискань клавіш може все ще зробити це, навіть якщо ваше додаток використовує autcomplete = off.

Як користувач, який хоче, щоб браузер пам'ятав (більшу частину) мою інформацію, мені було б неприємно, якби ваш сайт не пам'ятав мою.

Ми дійсно використовували ідею sasb для одного сайту. Це було додаток для медичного програмного забезпечення, щоб запустити кабінет лікаря. Тим не менш, багато з наших клієнтів були хірургами, які використовували безліч різних робочих станцій, в тому числі полупублічних терміналів. Таким чином, вони хотіли переконатися, що лікар, який не розуміє значення автоматично збережених паролів або не звертає уваги, не може випадково залишити свою реєстраційну інформацію легко доступною. Звичайно, це було до ідеї приватного браузера, який починає відображатися в IE8, FF3.1 і т. Д. Незважаючи на це, багато лікарів змушені використовувати старі шкільні браузери в лікарнях з ІТ, які не зміняться.

Отже, у нас була сторінка реєстрації, яка генерує випадкові імена полів, які будуть працювати тільки для цього повідомлення. Так, це менш зручно, але це просто вражає користувача з приводу того, що ви не зберігайте реєстраційну інформацію на публічних терміналах.

Жоден з рішень не допоміг мені в цій розмові.

Просто вимкніть автозаповнення form і потім увімкніть його для будь-якого input ви хочете, щоб він працював в формі. наприклад:

Не було стандартного способу зробити це (я думаю, що mozilla і IE все ще підтримують його), але возитися з очікуваннями користувачів, як правило, погана ідея.

Якщо користувач вводить дані своєї кредитної картки в форму, а потім нехай хтось інший використовує цей браузер, це не ваша справа :)

Тег форми відключить автозаповнення браузера (що раніше було введено в це поле) з усіх полів input в цій конкретній формі.

  • Firefox 3.5, 4 BETA
  • Internet Explorer 8
  • хром

Використовуйте нестандартне ім'я та ідентифікатор для полів, тому замість «name» введіть «name_». Браузери тоді не розглядатимуть це як поле імені. Найкраща частина цього - це те, що ви можете зробити це для деяких, але не для всіх полів, і буде автозаполнять деякі, але не всі поля.

Спробуйте їх теж, якщо просто autocomplete = "off" не працює:

Це проблема безпеки, яку браузери ігнорують зараз. Браузери ідентифікують і зберігають контент з використанням імен введення, навіть якщо розробники вважають, що інформація чутлива і не повинна зберігатися. Створення імені входу, відмінного від 2 запитів, вирішить проблему (але буде збережено в кеші браузера, а також збільшить кеш браузера). Попросити користувача активувати або деактивувати параметри в налаштуваннях браузера не є хорошим рішенням. Проблема може бути виправлена ​​в бекенда.

Ось моє виправлення. Підхід, який я реалізував у своїх рамках. Всі елементи автозаповнення генеруються з прихованим входом в такий спосіб:

Потім сервер обробляє пост-змінні наступним чином:

Значення можна отримати, як зазвичай

І браузер не зможе запропонувати інформацію з попереднього запиту або від попередніх користувачів.

Все працює як шарм, навіть якщо браузери оновлюються, хоче ігнорувати автозаповнення чи ні. Це був найкращий спосіб виправити цю проблему для мене.

Трохи пізно в грі. але я просто зіткнувся з цією проблемою і спробував кілька збоїв, але цей працює для мене на MDN

У деяких випадках браузер буде продовжувати пропонувати значення автозаповнення, навіть якщо атрибут автозаповнення відключений. Це несподіване поведінка може бути досить загадковим для розробників. Трюк, який дійсно змушує не закінчується, - призначити випадкову рядок атрибуту так:

Я не можу повірити, що це все ще проблема до тих пір, поки не повідомляється. Вищезазначені рішення не спрацювали для мене, оскільки сафарі, здавалося, знали, коли елемент не був відображений або за кадром, проте для мене це працювало:

Сподіваюся, це корисно для кого-то!

Додавання цього всередині роботи

(По крайней мере, на даний момент):

Додавання autocomplete = "off" не збирається вирізати його.

Змініть атрибут type = "search" введення на type = "search".
Google не застосовує автозаповнення до входів з типом пошуку.

Ви можете використовувати його на вході.

Ви можете відключити автозаповнення, якщо ви видалите тег form. те ж саме було зроблено моїм банком, і мені було цікаво, як вони це зробили. Він навіть видаляє значення, яке вже було запам'ятати браузером після видалення тега.

На даний момент кращою пропозицією є використання типу введення, який рідко автозаполняется.

Для сумісності з firefox, використовуйте звичайний autocomplete = 'off'

Ви можете просто помістити autocomplete = "off" в поля HTML, як наступний код.