Как запретить пользователю входить с более чем n компьютеров в asp.net

Я ищу способ запретить пользователям с моего веб-сайта, которые регистрируются с парой имен пользователей после регистрации, входить с нескольких компьютеров. На самом деле я ищу способ зарегистрировать компьютеры, с которых пользователи входят в систему, и запретить им давать свое имя пользователя и пароли друг другу. Я обнаружил, что в asp.net и на всех языках программирования веб-сайтов невозможно определить mac-адрес сетевой карты клиента. Между тем такие вещи, как имя браузера и IP-адрес, которые могут быть обнаружены с помощью httpcontext.current не пригодны для меня, потому что большинство пользователей имеют динамические IP-адреса. Также я хочу что-то более строгое, чем имя компьютера, потому что это не что-то невыгодное.

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

1 ответ

Решение

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

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

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

В долгосрочной перспективе, однако, на самом деле не существует 100% безопасного способа запретить пользователям открывать общий доступ к учетным записям. Самое лучшее, что вы можете сделать, - это попытаться ограничить сценарий "дубликата пользователя", чтобы было болезненно, если бы одна и та же учетная запись входила в систему более одного раза в одно и то же время.

Наконец, как примечание, динамический IP-адрес обычно не меняется так часто (маловероятно, что он изменится во время сеанса приложения), так что вы можете использовать это также нечетким образом.

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