Я редактирую веб-страницу, созданную с использованием Apache Wicket. И мы хотим добавить некоторую защиту CSRF на веб-сайт. Желая, чтобы он был без гражданства, мы хотим использовать шаблон двойного представления.Добавить заголовок защиты CSRF для вызова ajax в wicket
Для форм мы, вероятно, закончим использование скрытого поля, которое будет содержать токен csrf.
Но мы также должны добавить это к некоторому запросу GET, сделанному с использованием AjaxFallbackLink, который также изменяет некоторые данные (я знаю, что он не должен этого делать, но я не могу его изменить в настоящее время). Для этого мы рассматриваем возможность размещения маркера CSRF в настраиваемом заголовке, который отправляется с запросом, но я не видел никакого способа подключиться к методу javascript, который использует калитка (у wicketAjaxGet, по-видимому, есть только функция предварительного условия и канальная функция). Есть ли какие-либо предложения о том, как я могу это сделать?
Или бы добавить токен к URL-адресу, чтобы быть хорошим вариантом? Каковы будут проблемы в этом случае, по сравнению с настройкой в заголовке, если мы используем передачу https.
Или любые другие идеи о том, как мы могли бы добавить защиту CSRF для этих запросов AJAX GET?
Как CryptoMapper поможет предотвратить атаки CSRF? Из того, что я видел, калитка добавляет к url идентификатор сеанса (целое число, которое увеличивается на 1 для каждой запрошенной страницы), и я предполагаю, что он просто зашифрует этот URL. Разве злоумышленник не сможет «угадать» этот идентификатор сеанса и зашифровать его сам, чтобы атака работала? – redspider
CryptoMapper может шифровать весь URL, а не только параметры запроса в строке запроса. Секретный ключ для шифрования зависит от пользователя (т. Е. За сеанс HTTP), чтобы злоумышленник не мог догадаться об этом. Убедитесь, что вы используете Wicket 1.5.13 из-за CVE-2014-7808. –