Collections.synchronizedMap()
гарантии, что каждая атомарная операция Вы хотите работать на карте, будут синхронизироваться.
Выполнение два (или больше) операции на карте однако, должен синхронизироваться в блоке. Так да - Вы синхронизируетесь правильно.
Among other things, using the referrer won't work for users whose browsers (or corporate proxies) don't send referrers.
no is not enough, it is very easy for the attacker to do that FOR the client, as you ask, all the attacker has to do is get the user to click in a link created by him, from that point, is game over
The attacker will copy the form used in the original site, and spoof the rest because now the code is on his own site, then submit that to the victim site
As you mention on the question, tokens are the norm when it comes to prevent CSRF
Следуйте норме: используйте токены.
Проверка реферера на самом деле ничего не делает, потому что запрос все равно приходит с этой страницы! Проблема, которую вы пытаетесь предотвратить, заключается в том, что страница запрашивается без каких-либо действий пользователя; а не сама страница.
Токены - это способ защиты от этого. Вы создаете один, сохраняете его в сеансе и записываете в HTML, а затем, после публикации, вы проверяете тот, который получаете, и смотрите, соответствует ли он тому, который вы ожидаете. Если этого не произойдет, вы проиграете. В любом случае, вы создаете новый токен позже.
Также может быть уместно учесть, что это испортит людей, если у них будет несколько страниц; так что вы можете создать разные токены для каждой страницы.