Как включить токен CSRF с помощью Spring Boot - PullRequest
0 голосов
/ 28 апреля 2020

Я использую Spring Boot 2.1.1. Я думаю Защита CSRF включена по умолчанию для этой версии Spring Boot (поправьте меня, если я ошибаюсь). Я пытаюсь настроить защиту CSRF для моего java веб-приложения, но я не совсем уверен, какие изменения нужно внести, чтобы появился токен CSRF.

Я пытаюсь проверить для токена CSRF через браузер. Тем не менее, кажется, что имя и значение токена отображаются пустыми.

Мой jsp код:

<table>
    <c:forEach items="${model.containerObjects}" var="file">
        <tr>
            <form action="/path/container?fileName=${file.getName()}" method="post" id="${file.getName()}">
                <input form="${file.getName()}" type="hidden" value="${file.getName()}" />
                <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
                <td><a href="javascript:{}" onclick="document.getElementById('${file.getName()}').submit()">${file.getName()}</a></td>
                <td>${file.getContentLength()}</td>
                <td>${file.getLastModified()}</td>
            </form>
        </tr>
    </c:forEach>
</table>

Тем не менее, строка, где (я предполагаю) токен CSRF должно быть на переднем конце выглядит следующим образом:

<input type="hidden" name="" value="">

Я также убедился, что метод бэкэнда, соответствующий этой конечной точке, помечен @POST. Что-то еще мне не хватает?

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Как мы выяснили из разговора в комментариях к вопросу, OP не добавил необходимой зависимости безопасности Spring, которая требуется для защиты CSRF (так как это особенность Spring безопасности).

1 голос
/ 28 апреля 2020

Вы должны добавить его вручную, если хотите увидеть его в исходном коде html. Примерно так:

<meta name="_csrf" th:content="${_csrf.token}"/>

...