Безопасно ли принимать решения об авторизации на основе атрибутов сеанса? - PullRequest
1 голос
/ 17 июля 2011

Итак, я реализую пользовательскую защиту в своем приложении Java EE. То, что я делаю, это каждый раз, когда пользователь пытается войти в систему, если адрес электронной почты и пароль верны, я сохраняю его адрес электронной почты в качестве атрибута сеанса. Позже, когда клиент пытается получить доступ к закрытой области, я получаю адрес электронной почты из атрибута сеанса, чтобы авторизовать его или нет.

Все это безопасно сделать? Может ли клиент самостоятельно создать сеанс и назначить адрес электронной почты одному из его атрибутов, чтобы обмануть мое приложение и разрешить его в зонах с ограниченным доступом?

Если нет, может кто-нибудь дать мне учебное пособие о том, как правильно реализовать безопасность в Java EE?

Ответы [ 2 ]

0 голосов
/ 17 июля 2011

Учебное пособие по обеспечению безопасности выходит далеко за рамки этого сайта. Вы должны использовать Google, чтобы найти один из них.

Но ответить на первый вопрос, нет, это небезопасно. Пользователь может вмешиваться в любые данные, которые хранятся на его машине, даже на короткое время. Более безопасный способ состоит в том, чтобы выдать пользователю идентификатор сеанса и связать этот идентификатор со стороной сервера сведений о пользователе. Убедитесь, что ваш идентификатор сеанса достаточно большой, чтобы предотвратить коллизию, и чтобы номера идентификаторов сеансов были уникальными для каждого пользователя.

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

0 голосов
/ 17 июля 2011

Этот вопрос зависит от разницы между аутентификацией и авторизацией.

Аутентификация означает «вы тот, кем вы себя называете». Авторизация - это то, что вам разрешено делать, когда вы находитесь внутри приложения.

Вы не можете создать сеанс, если вы не аутентифицированы, поэтому я не думаю, что сеанс является проблемой.

Электронная почта - это другое дело. Это довольно легко подделать адрес электронной почты; это трудно проверить. Я бы остерегался использовать только адрес электронной почты для авторизации. Возможно, вам стоит подумать о том, чтобы объединить его с другими атрибутами.

...