GWT безопасность еще раз - PullRequest
0 голосов
/ 25 июня 2011

Я собираюсь разработать сайт, доступный для анонимных и зарегистрированных пользователей. Плановая схема безопасности аналогична, скажем, YouTube и большинству других сайтов "web 2.0". Зарегистрированный пользователь получит доступ к большему количеству функций, большему количеству данных и т. Д. Каков наилучший подход для реализации этого? Я имею в виду создание простого сервиса, возвращающего случайный код сеанса клиенту, и добавление объекта сеанса в одноэлементный объект приложения. Когда пользователь предоставит учетные данные, я изменю параметр «logged» в своем объекте сеанса. Маркер сеанса будет передаваться в качестве одного из параметров в каждом отдельном запросе, и службы будут менять свое поведение, если пользователь зарегистрирован или нет (т.е. будут возвращены только «общедоступные» данные или только ограниченный контент) Это хороший подход, или я должен использовать что-то другое?

1 Ответ

3 голосов
/ 25 июня 2011

В безопасности GWT нет ничего особенного, это то же самое с JSP, PHP, ASP, ROR и т. Д., То есть в безопасности веб-приложений.

На стороне сервера уже есть механизм сеанса, который генерирует безопасные случайные файлы cookie сеанса, используйте его. В качестве бонуса он обрабатывает истечение сеанса и другие вещи, с которыми вам пришлось бы справиться, если бы вы выпали самостоятельно.

  1. Вы не можете доверять ВСЕМУ, что клиент отправляет вам, поэтому, если вы отправляете имя пользователя или какой-либо токен с клиента на сервер (кроме пользователя, выполняющего вход), вы делаете это неправильно.
  2. Если ваша информация имеет какое-либо значение, принудительно включите SSL для всех соединений.

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

Конечно, вам нужно что-то сделать на клиенте, чтобы предоставить зарегистрированным и анонимным пользователям надлежащий пользовательский интерфейс. Но это , а не безопасность, работа только для обеспечения согласованного интерфейса. Вся безопасность на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...