#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 потому что это вопрос идеи, а не связанный с языком..