Как стать автором
Обновить

Spring Security 4 + CSRF (добавление в Spring проект защиты от межсайтовой подделки запроса)

Время на прочтение 2 мин
Количество просмотров 38K


Здравствуйте!
Современное веб приложение считается уязвимым, если в нем отсутствует защита от Межсайтовой подделки запроса (CSRF).
В Spring Security 4.x она включена по умолчанию, поэтому при миграции с Spring Security 3.x на 4.x ее надо либо отключить
<http>
	...
	<csrf disabled="true"/>
</http>
либо, правильнее и зачетнее, добавить в проект.

Собственно, сделал это в 10-минутном видео:


Ниже приведу основные моменты внедрения CSRF в проект:


  1. Использовать правильные HTTP запросы: по умолчанию CSRF защита отсутствует для запросов GET, HEAD, TRACE, OPTIONS. Это в частности означает, что для logout, если мы не хотим, чтобы злоумышленный сайт мог разлогинить пользователя, авторизованного в нашем приложении, требуется запрос POST.
  2. Во всех формах, где есть submit, добавить скрытое поле name=_csrf со значением csrfToken. Проще всего это сделать через Spring’s form tag library, который, кроме биндинга и валидации, при включенном csrf подставит в форму требуемое скрытое поле.
    <%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
    ...
    <form:form method="post" ...>
         ...
    </form:form>
    

  3. Для ajax запросов csrf токен добавляется в заголовок (header). Причем можно это сделать сразу для всех ajax запросов.
    <sec:csrfMetaTags />
    

    var token = $("meta[name='_csrf']").attr("content");
    var header = $("meta[name='_csrf_header']").attr("content");
    $(document).ajaxSend(function(e, xhr, options) {
        xhr.setRequestHeader(header, token);
    });
    

  4. Наконец для stateless REST запросов самый проcтой метод защиты: запретить любой не-JSON POST/PUT/DELETE
    @RestController
    @RequestMapping(value = AdminRestController.REST_URL, consumes = MediaType.APPLICATION_JSON_VALUE)
    


Ну и напоследок несколько ссылок на тему:



Спасибо за внимание и, надеюсь, Вы уже захотели внедрить защиту от CSRF в Ваш проект.
Теги:
Хабы:
+6
Комментарии 3
Комментарии Комментарии 3

Публикации

Истории

Работа

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн