Как запретить пользователю входить с более чем n компьютеров в asp.net
Я ищу способ запретить пользователям с моего веб-сайта, которые регистрируются с парой имен пользователей после регистрации, входить с нескольких компьютеров. На самом деле я ищу способ зарегистрировать компьютеры, с которых пользователи входят в систему, и запретить им давать свое имя пользователя и пароли друг другу. Я обнаружил, что в asp.net и на всех языках программирования веб-сайтов невозможно определить mac-адрес сетевой карты клиента. Между тем такие вещи, как имя браузера и IP-адрес, которые могут быть обнаружены с помощью httpcontext.current
не пригодны для меня, потому что большинство пользователей имеют динамические IP-адреса. Также я хочу что-то более строгое, чем имя компьютера, потому что это не что-то невыгодное.
Пожалуйста, подскажите, какие решения я могу использовать, не используя аппаратные решения на основе токенов. Спасибо.
1 ответ
Самое лучшее, что вы можете сделать, - это записать (вероятно, в базе данных или в кеше в памяти), когда один пользователь вошел в систему с тайм-аутом, а затем обновлять тайм-аут при каждом запросе. Затем разрешите этому пользователю войти в систему, пока значение isLoggedIn является текущим (то есть не истекло). Вы также должны истечь время ожидания при явном выходе из системы.
Теоретически, вы могли бы также истечь время ожидания в событии sessionExpire, но мы заметили, что событие не особенно надежно, и мы хотели сократить время ожидания, следовательно, используя наш собственный сценарий времени ожидания.
Для более строгих ценных бумаг вы также можете спрятать идентификатор сеанса и отпечаток браузера, если вы чувствуете такую склонность, наряду с тайм-аутом для борьбы с пользователями, которые попадают между вашим тайм-аутом и тайм-аутом сеанса.
В долгосрочной перспективе, однако, на самом деле не существует 100% безопасного способа запретить пользователям открывать общий доступ к учетным записям. Самое лучшее, что вы можете сделать, - это попытаться ограничить сценарий "дубликата пользователя", чтобы было болезненно, если бы одна и та же учетная запись входила в систему более одного раза в одно и то же время.
Наконец, как примечание, динамический IP-адрес обычно не меняется так часто (маловероятно, что он изменится во время сеанса приложения), так что вы можете использовать это также нечетким образом.