2016-01-11 4 views
-3

Я создал независимый тип аутентификации для моего приложения REST. Вот как это работает:Существует способ взлома идентификатора сеанса запроса из контейнера J2EE?

1 - журналы пользователя в переднем конце
2 - Бэкэнд проверяет, если имя пользователя и пароль в порядке, то он возвращает объект JSON к переднему концу с идентификатором сеанса:

(credential.setToken(request.getSession().getId()); 

3 - передний конец поднимите маркер и сохраняет его на клиенте.
4 - После этого процесса маркер отправляется по каждому запросу, выполненному в REST API.
5 - API-сервер сервера проверяет, является ли токен отправленным одним и тем же запросом, тогда доступ к REST API действителен.

Это очень просто, и на данный момент его работа отлично. На данный момент я не могу найти проблемы с безопасностью.

Из-за того, что я хочу поделиться этим и задать несколько вопросов о нем:

1 - это такой контроль безопасности безопасный способ обезопасить свой REST API?
2 - Даже если злоумышленник знает действительный request.getSessionID(), есть способ отправить его или изменить его по запросу в контейнер J2EE?

Спасибо.

+0

Вы используете SSL? В общем, домашняя безопасность всегда является риском. – Kayaman

+1

Здесь есть концептуальное недоразумение. S в REST означает Stateless, а не Stateful. Вам в основном нужно отправить основной заголовок авторизации HTTP по каждому запросу. См. Также a.o. http://restcookbook.com/Basics/loggingin Другое недоразумение в том, что J2EE умер почти десять лет назад с момента внедрения Java EE 5. Не уверен, какой REST API вы используете, но JAX-RS никогда не существовал в J2EE. – BalusC

+0

* Фактически * 'REST' означает' Представительский перевод состояния', но в его чистом виде он без гражданства. Однако в настоящее время общий прецедент включает аутентификацию и извлечение «API или ключа Auth», который в основном эквивалентен идентификатору сеанса. – Kayaman

ответ

-1

Механизм не отличается от стандартного идентификатора сеанса, хранящегося в файле cookie.

Я могу ошибаться, но мне интересно: учитывая, что этот токен не хранится в файле cookie и не управляется браузером, не может быть проще для кого-то получить доступ к нему и отправить его самому себе /сама ?

Сессионные файлы cookie управляются браузером и используют флаг HttpOnly сервер может удостовериться, что никакой код javascript не сможет получить к ним доступ.

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

+0

Я не думаю, что файлы cookie более безопасны, чем проверка идентификатора сеанса.
В любом случае, если кто-либо изменит токен в cookie, сервер аннулирует запрос, потому что измененный токен отличается от идентификатора сеанса запроса. –

+0

Идентификатор сеанса хранится в файле cookie (если он не указан в URL-адресе), отсюда и термин «cookie сеанса». – Kayaman

+0

@ Kayaman, я имел в виду идентификатор сеанса, реализованный в javascript (он же токен), а не cookie сеанса. –

Смежные вопросы