“Помните меня на этом компьютере” - как он должен работать?

Обработайте onError событие для изображения, чтобы повторно присвоить его источник с помощью JavaScript:

function imgError(image) {
    image.onerror = "";
    image.src = "/images/noimage.gif";
    return true;
}

Или без функции JavaScript:


следующая таблица совместимости перечисляет браузеры, которые поддерживают ошибочное средство:

http://www.quirksmode.org/dom/events/error.html

48
задан Jonas 23 July 2011 в 02:10
поделиться

6 ответов

I regularly use 2 or 3 machines simultaneously, and have "remember me" on all of them. If one of them disconnected the others that would be very annoying, so I wouldn't recommend it.

Traditionally it would use a time-out, the cookie expires after a certain length of time (or when the user signs out).

It all depends on your security model. If you are writing an internal company application where you only ever expect one user to be on one computer then you might want to have tighter restrictions than gmail.

Also, bear in mind the possibility of Denial of Service - if an action on one machine can force another machine to be unusable this could be use to prevent a legitimate user from taking control back in certain scenarios.

15
ответ дан 26 November 2019 в 19:04
поделиться
20
ответ дан 26 November 2019 в 19:04
поделиться

Вход в систему с другого компьютера не должен приводить к аннулированию входа в систему, связанного с файлом cookie на другом компьютере. Однако, если пользователь выходит из системы или «не вы? Войдите здесь», это должно очистить cookie, над которым работает пользователь.

Между прочим, кража cookie может быть затруднена, если настоять на https и сделать его не для сценариев.

Добавление «; HttpOnly» к выходу вашего файла cookie сделает этот файл cookie недоступным для javascript, например

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/7.0
Set-Cookie: ASP.NET_SessionId=ig2fac55; path=/; HttpOnly
X-AspNet-Version: 2.0.50727
Set-Cookie: user=t=bfabf0b1c1133a822; path=/; HttpOnly
X-Powered-By: ASP.NET
Date: Tue, 26 Aug 2008 10:51:08 GMT
Content-Length: 2838

, вы можете узнать больше об этом

5
ответ дан 26 November 2019 в 19:04
поделиться

Я бы сделал привязку каждого сеанса к IP-адресу. Если токен сеанса отправляется с другого IP-адреса, чем у вас, отклоните его.

0
ответ дан 26 November 2019 в 19:04
поделиться

Файл cookie «запомнить меня» также должен идентифицировать машину. Он должен быть связан с машиной, потому что есть места, где о вас нужно помнить, и другие места, где вас нельзя (дом или работа).

Срок годности обычно устанавливается на разумный период (две недели) или после пользователь явно вышел из системы,

3
ответ дан 26 November 2019 в 19:04
поделиться

Токены доступа должны быть привязаны к IP чтобы их нельзя было легко передать между машинами.

Они также должны быть реализованы таким образом, чтобы пользователи могли видеть, на каких машинах у них есть активные токены.

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

Политика, которую вы применяете, действительно зависит от данных, которые вы храните, и потребностей пользователя.

0
ответ дан 26 November 2019 в 19:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: