Как я могу использовать токены CSRF, предоставленные игровым фреймворком (play-2.2.3), с интерфейсом PHP?

Я использую play-2.2.3 для разработки API. Доступ к этим API осуществляется через внешний интерфейс PHP/JQuery. Простым примером может быть API resetPassword. Из PHP, когда я вызываю API сброса пароля, он должен быть защищен токеном CSRF, чтобы кто-то не мог просто вызвать этот API и сбросить чужой пароль. Если не считать рендеринга формы с использованием Scala (предоставляется Play-2.2.3), есть ли способ вручную иметь одноразовые серверные токены, которые отображаются как скрытые поля формы в форме сброса пароля и проверяются в почтовом запросе сервер на отправку формы?


person Farhad    schedule 22.06.2015    source источник
comment
Какая часть вашего приложения создает сеанс пользователя: PHP или Play? Как ваш Play API защищен от прямого доступа? Существуют ли какие-либо конфигурации для общего доступа к ресурсам между источниками (CORS) для ваших приложений PHP и Play?   -  person Alexander B    schedule 24.06.2015


Ответы (1)


Разобрался как это сделать.

  1. Что касается игры, НЕ добавляйте никаких настроек csrf в application.conf.
  2. Используйте аннотацию @AddCSRFToken для метода, который установит файл cookie с именем PLAY_SESSION=.....-csrfToken=.........
  3. В вызовах API, которые необходимо проверить, полностью передается файл cookie PLAY_SESSION, И в строке запроса передается файл csrfToken=......
person Farhad    schedule 25.06.2015