Как это спасает мою форму от атаки csrf?

у меня есть эта форма

<form>
//code
<input type="hidden" value="gfth35rfer43556thgrth8678gbfgb" name="csrf">
</form>

Токен уникален для каждого пользователя. Теперь предположим, что злоумышленник вошел в систему и открывает эту страницу. Теперь он знает, что такое токен текущего сеанса, скопировав значение, указанное выше, у злоумышленника есть токен аутентификации. Он может легко атаковать мой сайт. Как эта процедура предотвращает атаку csrf?


person Ace    schedule 19.12.2013    source источник
comment
Прочитайте en.wikipedia.org/wiki/Cross-site_request_forgery.   -  person SamV    schedule 19.12.2013
comment
Хорошее эмпирическое правило, когда вы спрашиваете о новой теме, заключается в том, чтобы просмотреть вопросы с наибольшим количеством голосов из обеих категорий: stackoverflow.com/questions/tagged/. Вы получите хорошее введение и увидите самые большие проблемы и решения в этой области.   -  person Mike B    schedule 19.12.2013


Ответы (1)


Данный:

  • Алиса - пользователь
  • Боб - тот, кто управляет сайтом
  • Мэллори - нападающий

Суть защиты CSRF состоит в том, чтобы не дать Мэллори обманным путем заставить Алису отправить данные, предоставленные Мэллори (используя учетные данные пользователя Алисы).

Поскольку у Алисы и Мэллори разные токены, Мэллори не может просто «скопировать значение выше».

Он не может помешать Мэллори отправлять данные, используя свои собственные учетные данные. Чтобы решить эту проблему, вам нужно решить, насколько доверять разным пользователям.

person Quentin    schedule 19.12.2013
comment
хорошее объяснение tnx. Как я могу запретить пользователям отправлять форму с другого сайта на мой. Если у вас есть какая-либо ссылка, объясняющая это, это было бы полезно - person Ace; 19.12.2013
comment
С какой целью? Чтобы их обманом не заставили отправлять данные, которые они не хотят отправлять? Это то, что будет делать защита CSRF. Чтобы они не отправляли данные, которые вы не хотите, чтобы они отправляли? Вы не можете предотвратить это. Вам необходимо проверить работоспособность данных, когда они поступают на ваш сервер. - person Quentin; 19.12.2013