Область Java и защищенный запрос

Я разрабатываю игру с разделенными и изолированными вселенными (например, ogame для тех, кто знает эту игру). Один игрок (учетная запись) связан с одной вселенной, но один игрок (физический) может создать одну учетную запись для каждой вселенной.

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

Для этого я создал класс Authentication, в котором хранятся id зарегистрированного игрока и имя юниверса (это имя схемы в моей базе данных PostgreSQL).

Итак, объект Authentication представляет зарегистрированного игрока. Для управления ролями приложения я использую пользовательскую область, которая собирает только id и имя юниверса (из моего объекта Authentication) для обработки SQL-запроса и получения имени группы для преобразования его в роли.

Все эти механизмы работают нормально.

Мне интересно, действительно ли это безопасно для этого? Может ли злоумышленник отправить запрос в мою область и внедрить в свой запрос id и имя вселенной для прямой обработки аутентификации? Поскольку моему реалму не нужны ни пароль, ни имя пользователя (обработано ранее в моем приложении для создания объекта Authentication), такой вредоносный запрос, вероятно, сработает.

Поэтому мой вопрос заключается только в том, чтобы узнать, можно ли сделать запрос в мою область вне моего Java-приложения (или моего сервера Glassfish)?


person Olivier J.    schedule 17.03.2013    source источник
comment
С Firefox и Firebug мы не видим запрос, отправленный в мою область. Означает ли это, что никто не может видеть, как информация отправляется в мою область для аутентификации? Тай   -  person Olivier J.    schedule 17.03.2013


Ответы (1)


Если предположить, что запрос происходит вне приложения и исходит от клиента, то, если вы не подтвердите имя пользователя/пароль, есть вероятность, что кто-то может сделать запрос за пределами вашего приложения и нарушить вашу безопасность. Вы должны потребовать предоставления имени пользователя/пароля во время отправки царства/вселенной и убедиться в это время, что пользователь авторизован для запроса, который он делает. Не просто убедитесь, что имя пользователя/пароль действительны, но убедитесь, что они зарегистрированы для вселенной, в которую они входят, и областей/ролей, к которым они пытаются получить доступ. Если вы этого не требуете, вы открываете себя для атак.

Firefox и Firebug хороши, но они не показывают необработанные запросы. Чтобы действительно увидеть запросы и то, что происходит, вы должны использовать анализатор пакетов, такой как Wireshark. Если вы видите там запрос, то вы уязвимы. Также убедитесь, что имя пользователя/пароль зашифровано и не отображается в виде обычного текста, иначе злоумышленники могут извлечь учетные данные пользователя, перехватив провод.

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

person Freedom_Ben    schedule 17.03.2013
comment
Я знаю, что это, вероятно, странный способ аутентификации пользователя, но моя цель - позволить пользователю ОДНОВРЕМЕННО подключаться ко многим учетным записям и, таким образом, благодаря раскрывающемуся списку, снова переключать учетную запись без выхода из системы/входа в систему. Я проверю, как советуют, пакеты с помощью Wireshark, и если у меня возникнут какие-либо сомнения, я рефакторинг своего кода. Спасибо - person Olivier J.; 17.03.2013