Предотвращение CSRF при использовании RequestFactory GWT

Я только что начал портировать свой код GWT-RPC на новый механизм RequestFactory.

Чтобы предотвратить подделку межсайтовых запросов (CSRF), мой код GWT-RPC захватил идентификатор сеанса, который был сохранен в файле cookie, и включил его в полезную нагрузку запроса. Это возможно с RequestFactory?

Я понимаю, что есть четыре обязательных метода Locator, включая findEntity(id_type id); поэтому я думаю: о боже, где я могу разместить свой идентификатор сеанса?


person David    schedule 03.06.2011    source источник


Ответы (1)


Как правило, вы будете расширять DefaultRequestTransport, чтобы добавить токен в запрос (например, настраиваемый заголовок, но вы также можете добавить его в тело запроса) и передать его init вашего RequestFactory. На стороне сервера вы либо используете фильтр сервлета, либо расширяете RequestFactoryServlet для обработки токена еще до обработки запроса RequestFactory. Здесь вы можете определить свой собственный «протокол»: например. возвращает статус 403 или 401 (или что-то еще), а затем обрабатывает его в RequestTransport, чтобы передать результат вашему приложению.

person Thomas Broyer    schedule 03.06.2011
comment
Прохладно. Серверная часть меня не смущает, но расширение DefaultRequestTransport немного пугает. Могу ли я добавить идентификатор сеанса в качестве заголовка в RequestBuilder? - person David; 03.06.2011
comment
Самый простой способ — добавить его в качестве заголовка (отсюда и мой комментарий в скобках: например, пользовательский заголовок, но вы также можете добавить его в тело запроса). - person Thomas Broyer; 03.06.2011