Я использую play-2.2.3 для разработки API. Доступ к этим API осуществляется через внешний интерфейс PHP/JQuery. Простым примером может быть API resetPassword. Из PHP, когда я вызываю API сброса пароля, он должен быть защищен токеном CSRF, чтобы кто-то не мог просто вызвать этот API и сбросить чужой пароль. Если не считать рендеринга формы с использованием Scala (предоставляется Play-2.2.3), есть ли способ вручную иметь одноразовые серверные токены, которые отображаются как скрытые поля формы в форме сброса пароля и проверяются в почтовом запросе сервер на отправку формы?
Как я могу использовать токены CSRF, предоставленные игровым фреймворком (play-2.2.3), с интерфейсом PHP?
comment
Какая часть вашего приложения создает сеанс пользователя: PHP или Play? Как ваш Play API защищен от прямого доступа? Существуют ли какие-либо конфигурации для общего доступа к ресурсам между источниками (CORS) для ваших приложений PHP и Play?
- person Alexander B   schedule 24.06.2015
Ответы (1)
Разобрался как это сделать.
- Что касается игры, НЕ добавляйте никаких настроек csrf в application.conf.
- Используйте аннотацию
@AddCSRFToken
для метода, который установит файл cookie с именемPLAY_SESSION=.....-csrfToken=........
. - В вызовах API, которые необходимо проверить, полностью передается файл cookie
PLAY_SESSION
, И в строке запроса передается файлcsrfToken=.....
.
person
Farhad
schedule
25.06.2015