Как вы защищаете от XSRF в Grails? - PullRequest
10 голосов
/ 18 января 2011

Как защитить себя от атак XSRF в Grails.Я вижу, что формы поддерживают понятие useToken, которое (я думаю, должно быть достаточно).Однако remoteForm или другой запрос, связанный с AJAX, не поддерживают эту функцию.

Также есть ли способ инвертировать функциональность useToken, чтобы он всегда использовался, а не включался в каждом конкретном случае?1003 *

Ответы [ 2 ]

2 голосов
/ 26 августа 2011

Вы можете попробовать посмотреть исходный код тег.Он использует SynchronizerToken для создания токена и сохранения его в сеансе.Исходя из решения этой проблемы должна быть возможность использовать один и тот же токен для всех форм на одной странице.Я не пробовал этого, но теоретически вам просто нужно вручную создать скрытое поле в форме и сгенерировать токен в этом поле.

0 голосов
/ 26 августа 2011

Мы вставили скрытое значение в объект запроса в фильтре before и зашифровали значение с помощью специального ключа.Затем мы внедряем это значение request.token в каждую форму на сайте, и когда мы получаем POST, у нас есть фильтр before для проверки того, что скрытое поле присутствует и его значение может быть декодировано тем же секретным ключом.

Если это скрытое значение отсутствует или если оно устарело - мы используем временную метку в качестве полезной нагрузки - мы сообщаем клиенту статус ошибки.

Это альтернативный способ, описанный выше, и мы используемэто потому, что мы не используем сеансы на наших сайтах, чтобы упростить балансировку нагрузки.

...