Chrome: Избегайте автозаполнения пароля в SPA - PullRequest
0 голосов
/ 06 мая 2020

У меня есть прогрессивное веб-приложение. Первая страница - это страница входа. Оттуда пользователь перенаправляется на другую / последнюю страницу (в зависимости от типа пользователя). Эта последняя страница представляет собой одностраничное приложение. Итак, в этом SPA есть несколько разделов, в которых пользователь может изменять конфиденциальные данные. Чтобы быть уверенным в личности пользователя, я запрашиваю пароль для подтверждения. Пока все в порядке.

Мои проблемы появляются с Chrome, который хочет автоматически заполнить поле пароля, используемое для подтверждения пользователя. Я вежливо прошу Chrome держаться подальше от этих полей:

<input id="pass" value="" autocomplete="off" type="password">

Я пытаюсь без form препятствовать тому, чтобы браузер заполнял эти поля, я пытаюсь использовать <form autocomplete="off"> - никаких шансов. Более того, после загрузки SPA Chrome заполняет поле пароля, несмотря на то, что этот раздел СКРЫТ! Я не хочу создавать удивительные формы паролей , я не хочу помогать пользователям быстрее оформлять заказ с помощью автозаполнения , я хочу Chrome, чтобы некоторые поля пароля оставались в покое без принуждения проделывать всякие уловки в этом плане. Я знаю, когда нужно «создавать удивительные формы паролей», но это не так. Я считаю, что такое поведение опасно и противоречит любым представлениям о безопасности.

Мой вопрос: как лучше всего избежать поведения Chrome? Я хочу, чтобы параметр autocomplete="off" соблюдался. new-password и off - это две совершенно разные вещи.

Этот вопрос можно быстро пометить как дубликат для этого или этого вопросов, но сейчас 2020 год, и я не могу найти элегантного решения моей проблемы. Я также считаю, что Chrome не исправит эту ошибку (извините, эта функция) и поставит «пользовательский опыт» перед любыми разумными мерами безопасности.

Итак, дорогой Chrome, как можно перевести на Вам те мелочи:

  1. Прекратить заполнять поле пароля при загрузке страницы. Поле даже не отображается для пользователя и даже может быть отключено. Я сказал вам, что не хочу, чтобы вы это делали. Но вам все равно.
  2. Прекратите вводить пароль, когда я скажу вам, что я использую это поле, чтобы узнать, является ли этот пользователь авторизованным пользователем для внесения некоторых важных изменений в учетную запись. Тогда какой смысл проверять личность пользователя? Пусть любой, кто обнаружит, что мы вошли в систему на веб-странице, делать с этой учетной записью все, что он хочет!
  3. Вы видели, что я хороший мальчик ?! Я разрешаю вам автоматически заполнять поля ПАРОЛЬ (отмеченные autocomplete = "new-passord"), когда пользователь меняет пароль. Таким образом, вы можете внести предложения по выбору более сложного пароля и даже сохранить новый пароль (который можно будет автоматически заполнить при входе в систему). Но в ЭТОЙ форме я НЕ хочу вводить текущий пароль. Ясно? Что вы не понимаете из autocomplete = "off"?
  4. Перестаньте предлагать сохранять всевозможные пароли, когда пользователь нажимает кнопку «Назад». Нажав кнопку «Назад», пользователь отказывался от изменений, которые он хотел внести. Он сдался. Он не хочет ничего экономить. ОК? Можем ли мы поладить?

1 Ответ

2 голосов
/ 06 мая 2020

Таким образом, атрибут автозаполнения больше не поддерживается некоторыми браузерами, но вы можете попробовать очистить поле (сделав тег недоступным для chrome), используя javascript, например:

<input id="pass" value="" autocomplete="off" type="password" onfocusout ="this.setAttribute('readonly','readonly');" onfocus ="this.removeAttribute('readonly');">

...