Кроссбраузерные методы отключения кеширования паролей

Сохранение и автоматическая подача имени пользователя / пароля - это функция большинства современных браузеров. И пользователь обычно может отключить эту функцию для каждого домена. Но есть ли у самого сайта стандартный способ предотвратить кеширование паролей?

Акцент здесь делается на кроссбраузерности, поэтому при необходимости я бы использовал несколько параллельных механизмов.

(Я видел, как кеширование эффективно отключалось при наличии нестандартных полей входа, например, дополнительного скрытого поля пароля. Но я бы предпочел не зависеть от побочные эффекты, поведение которого может неожиданно измениться в будущем.)

И наоборот, существуют ли браузеры / версии, которые реализуют кеширование паролей без какой-либо функции отключения?

Чего именно вы хотите достичь? Принуждение пользователя к запоминанию пароля или предотвращение сбора злоумышленниками сохраненных паролей на стороне пользователя?

PolyThinker 26.12.2008 19:09

Моя - не объяснять почему, моя - просто реализовать и развернуть. (Но, вероятно, позже.) Заказчик: disa.mil

Chris Noe 27.12.2008 03:30

Вы должны использовать только CAC;)

erickson 27.12.2008 08:18
SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
Один-единственный вредоносный запрос может нанести ущерб вашему бизнесу. Уязвимости вашего кода могут привести к:
12
3
5 496
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Дайте вводимому паролю случайно сгенерированное имя, которое можете узнать только вы. Сохраните это имя, например, в скрытом поле, а затем используйте его для получения вставленного пароля. Таким образом, даже если браузер кэширует пароль, он не сможет восстановить его при следующем посещении пользователем.

Ваши пользователи, скорее всего, на этом этапе продолжат кэшировать пароли в посте на боковой стороне монитора, но на самом деле это совсем другая битва.

Тот же метод хорошо работает против спама, поскольку большинство ботов полагаются на поиск общих имен полей.

Интригующе. Но браузер по-прежнему будет хранить пароли на диске пользователя, что для нас является нарушением безопасности. (И, о, я согласен с вами в теории постита.)

Chris Noe 26.12.2008 18:52
Ответ принят как подходящий

Добавьте autocomplete = "off" к вашим элементам <input>. Работает во всех современных браузерах, IIRC.

А, теперь видите, я ожидал чего-то вроде cache = off. Мне нужно будет протестировать, чтобы убедиться, что пароли не попадают на диск, а не просто исключаются из автозаполнения ...

Chris Noe 26.12.2008 19:29

К вашему сведению, Microsoft решила, что Internet Explorer 11 больше не поддерживает autocomplete = "off" для полей input type = "password". msdn.microsoft.com/en-us/library/ie/ms533486%28v=vs.85%29.as‌ px

JW Lim 06.03.2014 08:15

Я бы предположил, что браузеры сохраняют поля формы при ее отправке. Что, если бы вы использовали AJAX для получения значения поля пароля, отправили его, а затем очистили поле? На самом деле форма никогда не будет отправлена, поэтому у браузера, теоретически, никогда не будет возможности сохранить значения.

Кто-нибудь тестировал этот ответ? Мне нравится теория, я просто хочу знать, правда ли она.

gnarf 18.07.2009 13:43

AFAIK, замаскированные поля (те, которые показывают '*' вместо символа, который вы вводите), никогда не сохраняются для автозаполнения. Вы хотите запретить пользователю запоминать пароль к вашему сайту в средствах сохранения пароля браузера?

Исправьте, не допускайте сохранения в средстве сохранения паролей.

Chris Noe 26.12.2008 19:31

Просто добавьте еще одно поле пароля между именем пользователя и паролем и установите стиль, чтобы не отображать ничего.

<!-- Username label and text here> ... <--!>
<input type = "password" id='txtPasswordDud' style='display: none;' />
<!-- Actual Password label and text here> ... <--!>

Другие вопросы по теме