XSRF защита GET .NET MVC - PullRequest
       27

XSRF защита GET .NET MVC

1 голос
/ 13 сентября 2010

У меня есть сайт, который будет показывать конфиденциальную информацию.Я использую токены Anti Forgery и т. Д. Для защиты от XSRF в постах.Однако я беспокоюсь о том, что кто-то может просматривать конфиденциальную информацию из GET.Какова рекомендуемая практика защиты данных только для чтения, отправляемых через GET в .Net MVC 2?

Ответы [ 2 ]

1 голос
/ 13 сентября 2010

Если вы уверены, что GET запросы предназначены только для чтения, вам не о чем беспокоиться из XSRF.Невозможно украсть информацию с другого сайта, используя просто XSRF, поэтому вам не нужно защищать URL-адреса с помощью токена.Фактически, использование токенов в URL сделает невозможным использование закладок.

Сказав это, вы должны быть на 100% уверены, что в вашем приложении нет уязвимостей XSS.Если таковые имеются, злоумышленнику не нужно беспокоиться о XSRF и непредсказуемых токенах.

0 голосов
/ 13 сентября 2010

Защита 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

Каждый, кто нажмет на него, получит новое письмо от хакеров. Но если вы поместите токен туда и будете проверять его каждый раз, действие будет выполняться только для тех, кто получил такой же токен при запросе страницы, в этом случае ссылка будет работать только для пользователя, который его опубликовал, и никто другой.

Вы также можете защитить конфиденциальные формы, такие как изменение адреса электронной почты, пароля и т. Д. С помощью поля пароля. Обратите внимание, что капча не очень помогает здесь.

...