Можно ли добавить атрибут одного и того же сайта в .csrfTokenRepository Spring Security CSRF (CookieCsrfTokenRepository.withHttpOnlyFalse ()) - PullRequest
0 голосов
/ 03 февраля 2020

Моя конфигурация безопасности имеет следующую строку:

...csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())...

, которая отправляет csrf cook ie с каждым запросом обратно клиенту. У этого повара ie нет атрибута на одном сайте. Можно ли добавить атрибут того же сайта? Я осмотрел некоторые методы внутри этого класса, и в моих знаниях нет ничего о дополнительных атрибутах.

Как это можно сделать?

1 Ответ

1 голос
/ 03 февраля 2020

К сожалению, начиная с версии 4.0.1, servlet-api не позволяет добавлять атрибут Same-Site к Cookie. Надеюсь, это скоро изменится.

Но в то же время вы можете предоставить собственную реализацию CsrfTokenRepository, которая вместо добавления Cookie к HttpServletResponse (и, следовательно, будет ограничена представлением сервлет-API). повара ie), устанавливает повара ie непосредственно в заголовке HTTP:

public class CustomCsrfTokenRepository implements CsrfTokenRepository {
    // implement other methods...

    @Override
    public void saveToken(CsrfToken token, HttpServletRequest request,
            HttpServletResponse response) {

        // some version of this:
        response.setHeader("Set-Cookie", "HttpOnly; SameSite=strict");
    }
}

Вы можете взглянуть на CookieCsrfTokenRepository, чтобы заполнить пробелы.

...