2014-02-07 6 views
2

У меня есть набор служб REST, которые защищены CSRF, используя что-то похожее на шаблон маркера синхронизатора OWASP (https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet). * REST реализована с использованием Java и JAX-RS * Security реализована с использованием Spring Security CSRF токены * HTTP PUT, POST и DELETE защищеныМожно ли включить токен CSRF для службы REST в качестве заголовка ответа Http?

В моем запуске веб-приложения, я пишу правильный маркер CSRF в HTML-страница, а затем приложение включает в себя токен как «X-CSRF-HEADER» в заголовках запроса для каждого отдельного запроса.

У меня также есть клиенты, которые напрямую обращаются к URL-адресам (например, для завивки командной строки и других).

Альтернативные клиенты должны как-то получить токен CSRF (после аутентификации, конечно).

Можно ли включить токен в качестве заголовка ответа HTTP для запросов GET? Если это так, я мог бы включить его в заголовок ответа, и клиент мог его прочитать и включить в будущие заголовки запроса.

Это безопасно?

+1

Почему это было бы менее или более безопасным, чем отправка его в тело ответа? –

+0

@JBNizet Я не думаю, что это по-другому ... но я боюсь того, чего не знаю! Возможно, где-то есть HTTP Header. –

+0

В конце концов, все идет по проводу. Если используется SSL, все шифруется. Если он не используется, ничего не зашифровывается. –

ответ

4

Обычно считается безопасным включать токен CSRF в заголовки ответов. Так же, как тело запроса, заголовки ответов зашифрованы в ответах SSL и недоступны для всех доменов. Причина того, что токен CSRF не был отдан ответу по умолчанию, заключался в том, чтобы мы задерживали создание сеанса, пока это не будет необходимо. Для получения дополнительной информации см. SEC-2276

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