Архитектура веб-входа в систему безопасности?

#web #login #security #server-side

#веб #аутентификация #Безопасность #на стороне сервера

Вопрос:

Я внедрил логин на сайте (не использовал asp.net по умолчанию). Когда пользователь входит в систему, я сохраняю его IP-адрес в базе данных. Если он ничего не делает в течение X минут, его IP-адрес удаляется. Всякий раз, когда пользователь пытается зайти на страницу с ограниченным доступом, я проверяю, есть ли его IP в базе данных. Если это так, он может продолжить. Проблема в том, что если вошедший в систему пользователь находится в сети WiFi или любой другой общей сети, у всех остальных пользователей будет один и тот же ip, а это нехорошо. Как я могу преодолеть эту проблему? Являются ли файлы cookie лучшим решением?

Комментарии:

1. Я не думаю, что вам следует основывать учетные данные для входа на IP. Их можно легко подделать, не говоря уже о проблемах локальной сети, о которых вы упомянули. Используйте файлы cookie или сеансы.

Ответ №1:

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

Комментарии:

1. И полагаться только на файлы cookie? Или объединить это с моим методом IP?; я использовал его плюс sessionid

Ответ №2:

Я предполагаю по тегам, что вы используете WebLogic Server для своего решения, хотя ваш комментарий о ASP.net заставляет меня задуматься. (хотя для вопроса не установлены теги ASP?)

Короткий ответ заключается в том, что вы усложняете жизнь, чем это должно быть — если я правильно понимаю вашу проблему — что вы хотите, чтобы время ожидания сеанса бездействующего пользователя истекало после определенного периода бездействия по соображениям безопасности — тогда вы можете сделать это через конфигурацию приложения с параметром session-timeout:

http://download.oracle.com/docs/cd/E13222_01/wls/docs81/webapp/web_xml.html#1017275

По возможности, когда речь идет о безопасности, я всегда предпочитаю избегать развертывания собственного решения. Просто недостаточно умен, чтобы доверять этому. 🙂

Прошу прощения, если я ошибаюсь в своем понимании здесь.

Комментарии:

1. Прошу прощения, я попытался пометить weblogin, я увидел, что это weblogic и изменил его. Возможно, я не сохранил это. Я не помечал asp.net потому что это вопрос идеи, а не связанный с языком..