Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JSON Web Tokens и безопасность / 17 сообщений из 17, страница 1 из 1
05.10.2016, 22:32
    #39321451
meph
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
Познаю дзен путем написания стильно-модно-молодежного пет проекта: REST backend (Spring MVC) общается посредством JSON с frontend (Angular + Spring MVC). Собственно возникла задача как организовать безопасный доступ к REST API. Вот здесь я и наткнулся на JWT. Сначала идея мне понравилась, да и с реализацией проблем нет.

Но погуглив, например http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/, у меня появились сомнения насчет безопасности. Как мне кажется, в плане подмены части токена проблем возникнуть не должно. Но вот как быть с угоном токена? В таком случае выходит, что угнанным токеном можно будет пользоваться бесконечно до тех пор, пока кто-то вручную не подкрутит backend? Плюс для удобства токен придется хранить на клиенте, то есть вытащить его можно довольно тривиально через js.

Поделитесь опытом, как это реализуют по-честному, без самописных свистоплясок. Или у меня паранойя и ящериков с масонами на самом деле не существует?
...
Рейтинг: 0 / 0
06.10.2016, 00:06
    #39321476
scf
scf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
По-честному полагается рандомный токен и хранить на сервере список валидных токенов. Это нужно для того, чтобы юзер мог в любой момент уничтожить токен через logout.

Рандомные токены делятся на две категории - короткие и совсем рандомные и длинные, с информацией внутри, подписанные и зашифрованные по какому-нибудь стандарту вроде JWT. Второй вариант полезен в больших системах, когда удобнее брать информацию прямо из токена, а не ходить в какую-нибудь базу.

Если нет желания или возможности делать "как положено", то в подписанный токен можно просто положить expiration time, спецификация JWT содержит отдельное поле как раз для этого. Тогда токен протухнет сам через заданный интервал.
...
Рейтинг: 0 / 0
06.10.2016, 00:19
    #39321480
scf
scf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
Вообще авторизацию RestAPI сейчас модно делать через OAuth2. Помимо готовых рецептов по работе с токенами, можно самому прикрутить авторизацию через гугль, вконтакт и т.п.
...
Рейтинг: 0 / 0
06.10.2016, 08:53
    #39321572
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
meph,
Тут сазали, что если в токене время есть, то сабж твой не имеет смысла.
2. Токен при sso. Т.е. оверхед? У тебя же один сервер.
3. Берем базовую где сессионная кука и плюс HTTPS.
Безопасность лучше твоей?
...
Рейтинг: 0 / 0
06.10.2016, 19:06
    #39322268
meph
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
Спасибо всем за ответы. Попробую конкретизировать для того, чтобы избежать обсуждения авторизации в целом. У меня один backend и один frontend(оба под моим контролем, но frontend может быть и сторонний), я не планирую SSO для целого зоопарка. Я бы хотел разобраться именно с JWT. Если с этой идеей не сложится, то уже буду смотреть в сторону OAuth2. Или OAuth2 по сути уже стандарт, а JWT никто не использует?

Пока я остановился именно на "длинных" токенах, и у меня есть expiration time поле. Наверное здесь и кроется главный вопрос. Удобство против безопасности. Как должен быть реализован механизм refreshToken ? С одной стороны, если токен живет час, то юзера выкинет на страницу логина даже если он только что тыкал в UI. Это очень неудобно в 21 веке. Если же мы будем делать refreshToken каждый раз, когда пришел валидный токен с истекшим expiration time, то этим токеном можно пользоваться бесконечно. И конечно мне нравится идея не лезть в БД для валидации токена при каждом реквесте.
...
Рейтинг: 0 / 0
06.10.2016, 22:27
    #39322336
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
meph,
Если сессионная кука валидна, то ей можно пользоваться бесконечно. Пока не закроешь браузер.
Почему тот же ВИ тебя смущает тут?
Не усложняй жизнь.
...
Рейтинг: 0 / 0
06.10.2016, 22:41
    #39322338
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
meph,
Если токен или кука валидны и между запросами пол часа, то направляешь на повтор авторизации (куку сперли).
Второй вариант зашить в токен id сессии.
Тогда никак не украсть.
Но тогда и токен не нужен. О чем выше уже было.
Но ты упрямый.
...
Рейтинг: 0 / 0
07.10.2016, 09:11
    #39322447
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
Petro123Но тогда и токен не нужен. О чем выше уже было.
Одной куки последнее время недостаточно. Ибо открыл ты сессию. А потом на другом сайте фигакс тебе команду списать деньги в пользу голодающих. И опаньки - кука то ушла вместе с командой автоматом.
Поэтому и добавлять токены всякие стали через параметры, причем внешне независимые от куки.
...
Рейтинг: 0 / 0
07.10.2016, 09:47
    #39322482
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
Сергей Арсеньев,
Это и есть паранойя.
Https разве не решение?
...
Рейтинг: 0 / 0
07.10.2016, 14:41
    #39322835
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
Petro123,
Чем тебе https поможет от того, что из любого окна браузера можно отправить http(s) запрос на твой сервер веб почты с предложением отослать письмо (далее идет список получателей спама)? Если твой браузер получил куку (ты читаешь почту), то он ее отправит вместе с таким запросом. Вот чтобы получить значение переменной, которое следует отправлять в параметрах придется попотеть.
...
Рейтинг: 0 / 0
07.10.2016, 14:58
    #39322851
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
Сергей АрсеньевЕсли твой браузер получил куку (ты читаешь почту)
- эта кука в пределах домена. Т.е. в своей песочнице и рядом домен VTB24 банк она не видит.
- тип куки - текст. Т.е. код вставить туда нельзя.
- если куку украли, то и токен тоже можно украсть.
Я не спорю, что сам Касперский умеет красть куки)).
Если кто-то такой же как он, предалагаю ломать мой демо сайт).
Там кук полно, а пароля вообще нет.
Потом тут разберём кто смог куку украсть и как.
А https спасает от перехвата пароля при базовой аутентификации в заголовке http запроса.
...
Рейтинг: 0 / 0
07.10.2016, 15:07
    #39322861
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
Сергей Арсеньев,
вообще, "оверхед" штука тонкая.
Пусть ТС хоть server shibboleth себе ставит и будет так же крут как федеральная ИС ГОСУСЛУГИ.
Удачи ему!
...
Рейтинг: 0 / 0
07.10.2016, 15:08
    #39322862
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
Petro123Сергей АрсеньевЕсли твой браузер получил куку (ты читаешь почту)
- если куку украли, то и токен тоже можно украсть.

Куку красть никто не собирается, от слова вообще. Браузер сам ее отправит, даже если злоумышленник и не знает ее содержимое, а просто попросит отправить запрос в данный домен. Да увидеть результаты запроса, он тоже скорее всего не сможет. Но запрос уйдет и если проверка только по куке, может оказаться авторизованным. Но чтобы отправить параметр надо знать его значение.
...
Рейтинг: 0 / 0
07.10.2016, 15:15
    #39322873
scf
scf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
meph,

С точки зрения безопасности в сети, признанным ресурсом является OWASP.
Начните отсюда: https://www.owasp.org/index.php/Session_Management_Cheat_Sheet
...
Рейтинг: 0 / 0
07.10.2016, 15:18
    #39322878
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
Сергей АрсеньевБраузер сам ее отправит
мне не интересно играть в Сноудена.
Есть код, пример?
Воспроизводим его на моём сайте и разбираем.
Нет или лень - тему можно закрывать.
...
Рейтинг: 0 / 0
07.10.2016, 15:20
    #39322881
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
Petro123,

Есть такое заклинание : "Окей гугл CSRF"
...
Рейтинг: 0 / 0
07.10.2016, 18:55
    #39323017
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON Web Tokens и безопасность
Tomcat CRSF . Можно заменить на "ваш любимый http-сервер CRSF".
Да, уязвимость есть. Но, блин, не вчера же она обнаружена.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JSON Web Tokens и безопасность / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]