Защита XSRF для данных POST (с использованием токенов, как вы сказали) должна работать и с данными GET. С точки зрения хакера, подделка GET намного проще, чем подделка POST (на первом вы только публикуете ссылку, на втором вам нужно указать на вредоносный веб-сайт со скрытыми формами iframe и автоматической отправки), но оба они терпят неудачу, если токены проверены.
Пример:
разместив ссылку так:
www.domain.tld / page.aspx? Получить = данные & маркер = token_given_to_hacker
не должен ничего возвращать или просто ошибка для тех, кто получил другие токены. Таким образом, никакие чувствительные действия не сделаны для неправильных людей.
Это xsrf, при этом вы не можете украсть информацию, но заставите других отправлять формы и предпринимать действия, в результате которых знают только хакеры. Например:
Изменение электронной почты, в форме электронной почты, на электронную почту хакера. Предположим, у вас есть форма GET с 1 полем: новое электронное письмо (для простоты). При отправке URL выглядит следующим образом:
www.domain.tld/page.aspx?email=myemail@otherdomain.tld
Теперь, если хакер разместит на вашем форуме ссылку с URL:
www.domain.tld/page.aspx?email=hackers_email@yetotherdomain.tld
Каждый, кто нажмет на него, получит новое письмо от хакеров. Но если вы поместите токен туда и будете проверять его каждый раз, действие будет выполняться только для тех, кто получил такой же токен при запросе страницы, в этом случае ссылка будет работать только для пользователя, который его опубликовал, и никто другой.
Вы также можете защитить конфиденциальные формы, такие как изменение адреса электронной почты, пароля и т. Д. С помощью поля пароля. Обратите внимание, что капча не очень помогает здесь.