Нужна ли в этом кейсе csrf защита?
Если я всегда использую POST/PUT/DELETE запросы, то-есть не использую query параметры типа domain.com/path?key=value, нужна ли мне CSRF защита? Можно же заксекьюрить куки всякими sameSite, HTTPOnly, Secure и прочими полями.
Мой сервер для фронта - это, по сути API. То-есть он не рендерит HTML, не работает с формами. Только POST/PUT/DELETE запросы, или GET запросы, но без данных в URL.
Проблема в то, что middleware для моего фреймворка (https://docs.gofiber.io/api/middleware/csrf) работает не правильно (или я не понимаю, как должна работать CSRF защита). На GET запрос он ставит csrf cookie, но при повторном запросе он не обновляется - ставиться тот-же. Но да, без этого cookie POST запросы не проходят, но даже когда я получил этот cookie от GET запроса, потом успешно отправил POST запрос - csrf cookie не обновляется.
И тут либо я не правильно понимаю, как работает CSRF защита. Она же должны каждый запрос генерить новый csrf токен. Либо этот middleware не правильно написан (в принципе можно переписать).
Но, если логика такая, что клиент сначала с помощью GET запроса получает этот токен, а потом только может пользоваться POST/PUT/DELETE методами, то нужно создать эндпоинт типа get_csrf, так как клиент может отправить POST первым (ведь я не рендерю HTML). На насколько правильно делать такой эндопоинт? Пока изучал этот вопрос ничего про это не нашел.
Но не совсем понимаю, что мешает злоумышленнику украсть этот CSRF токен, если он уже украл cookie и воспользоваться им (этот токен ведь тоже в cookie лежит)? Или здесь расчет только на лаг во времени, типа злоумышленник не успеет?