Как работает флажок «Запомнить мой пароль»? - PullRequest
28 голосов
/ 27 декабря 2010

Существует множество форм входа в систему с небольшим флажком «Запомнить мой пароль», чтобы при следующем посещении веб-сайта браузер автоматически заполнял поле пароля для вас.

Но я заметилповедение в современных браузерах, таких как Chrome / Firefox, которое отображает панель уведомлений для сохранения имени пользователя / пароля, даже если эта конкретная веб-страница не имеет никакого флажка «запомнить пароль».

, поэтому мои вопросыявляются:

  1. Если мне нужно поставить флажок «запомнить пароль» в форме входа в систему, что мне нужно делать, когда пользователь проверяет его?Я имею в виду, должен ли я хранить пароль в файлах cookie браузера (или в локальном хранилище)?Если да, должен ли пароль быть зашифрованным или открытым текстом?
  2. Панель уведомлений «Сохранить пароль» - это функциональность браузера или есть ли способ вызвать его с веб-страницы?

Ответы [ 6 ]

70 голосов
/ 27 декабря 2010

Часть «сохранить пароль» приходит из диспетчера паролей браузера, когда он видит <input type="password">, который выглядит так, будто действительно запрашивает пароль. Вы можете использовать атрибут autocomplete для подавления этого в большинстве браузеров:

<input type="password" name="password" autocomplete="off">

Это не будет подтверждено, но обычно это не имеет значения.

Часть "запомнить меня" полностью отделена от менеджера паролей браузера. Флаг "Запомнить меня" - это дело сервера, и все, что он делает, - это возьмет дату истечения срока действия файла cookie, который он отправляет обратно. Сервер всегда будет отправлять cookie-файлы обратно (если только они не используют куки-файлы для отслеживания сеансов, но это редко и в любом случае не нужно будет «помнить меня») с чем-то внутри, чтобы идентифицировать пользователя клиента.

Если вы отметите «запомнить меня», то вы сообщаете серверу, что хотите постоянный сеанс. Чтобы достичь этого, сервер будет включать в файл cookie дату истечения срока действия, и эта дата истечения будет в будущем. Когда дата прибывает, браузер истекает и удаляет куки; без файла cookie сервер больше не будет знать, кто вы, и вам придется снова войти в систему.

Если вы не отметите «Запомнить меня», вы получите сессионный cookie. Сессионные куки не имеют дат истечения срока действия, поэтому они автоматически истекают при выходе из браузера. Сессионные куки полезны для общих компьютеров.

Резюме:

  • «Сохранить пароль» из диспетчера паролей браузера.
  • «Запомнить меня» - это время истечения срока действия cookie для входа в систему.

Извините, что так долго растерялся, но, похоже, в некоторых ответах есть некоторая путаница и отсутствие ясности.

2 голосов
/ 27 декабря 2010

Вопрос 1:

  1. Идентификатор сеанса хранится в файле cookie.AFAIK, пароль или его хэш не сохраняются.Сеанс создается на стороне сервера каждый раз, когда вы входите в систему. Если вы вошли в систему с установленным флажком «Запомнить меня», сервер передает файл cookie с идентификатором сеанса (или зашифрованным идентификатором сеанса, или чем-то, что уникально идентифицирует сеанс пользователя), и этоcookie сохраняется на стороне клиента.
    При следующем входе в систему сервер проверяет, есть ли cookie в сеансе, если он там есть (и сеанс не был уничтожен / истек - см. пункт 2 ниже).) Затем сервер идентифицирует вас как "Veera" и позволяет вам на сайте.

  2. Многие веб-сайты предлагают опцию «Выйти из всех сеансов» (например, Gmail: см. Нижнюю часть окна).Это сделает недействительными все сеансы, связанные с пользователем.

Вопрос 2:
Пароль для запоминания - это функция, предлагаемая браузером.Браузер видит, есть ли на странице <input type=password>, и предлагает сохранить этот пароль для вас.Любой <input type=password> вызовет это.

Разница между сервером, запоминающим вас, и браузером, запоминающим ваш пароль, заключается в том, сохранен ваш пароль или нет.И в сочетании с опцией «Выход из всех сессий» это намного лучше, чем позволить браузеру сохранить ваш пароль.

0 голосов
/ 27 декабря 2010
  1. Обычным способом сделать это должен быть файл cookie с зашифрованным паролем на стороне клиента
  2. Я не совсем уверен в том, что говорю, но с пользовательской точки зрения мне кажется, что браузер определяет, нужно ли им отображать свой внутренний диалог сохранения пароля, основываясь исключительно на наличии ввода пароля на странице. Таким образом, если у вас есть стандартный ввод пароля на вашей странице, браузер будет пытаться добавить комбинацию пользователь / пароль в свою базу данных.
0 голосов
/ 27 декабря 2010
  1. Да, вам нужно использовать куки
  2. Это функциональность браузера, и его нельзя вызвать
0 голосов
/ 27 декабря 2010
  1. Вам понадобится способ узнать, кто пользователь.Обычно это делается путем сохранения куки в браузере пользователя.Вы должны использовать только то, что не легко подделать, поэтому следует использовать шифрование.Вы могли бы использовать локальное хранилище, если вы уверены, что все браузеры, которые будут использоваться на вашем сайте, поддерживают его.

  2. Нет, нет.Наличие поля пароля - это обычно то, что вызывает панель.

0 голосов
/ 27 декабря 2010

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

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