Уязвимость CSRF - это та, которая позволяет злоумышленнику (или веб-сайту) заставить ничего не подозревающего пользователя выполнить на вашем сайте действие, которого он не хотел.
В некоторых реальных примерах могут быть такие вещи, как если бы вы позволили пользователю удалить учетную запись через GET вместо POST, кто-то мог бы опубликовать следующий комментарий на вашем сайте (при условии, что у сайта есть какой-то способ опубликовать комментарии или другие материалы и т. Д.) .)
Я думал, что сделаю комментарий на вашем сайте. Проверьте это классное изображение!
И теперь, когда авторизованный пользователь загружает эту страницу, его учетная запись будет удалена. Если бы это было сделано поверх POST, а не GET, кто-то мог бы создать форму и обмануть пользователей, отправив ее, и получился бы тот же результат. Принимая во внимание, что если бы вы использовали токен CSRF, это было бы невозможно.
Другим примером может быть то, что внешний сайт может создать форму, которая отправляет POST на ваш сайт, и выполнить нежелательное действие. Допустим, на вашем сайте есть корзина покупок, в которой не используются токены CSRF. Вредоносный сайт может создать форму с кнопкой «Нажмите здесь, чтобы зарегистрироваться», но на самом деле заказывает 1000 штук с вашего сайта. Если вошедший в систему пользователь с вашего сайта заходит на этот вредоносный сайт и нажимает кнопку, он получит приятный сюрприз по почте.
Очевидно, что есть и другие случаи, это всего лишь несколько примеров. Поиск Google должен показать множество статей и учебных пособий, многие из которых, вероятно, будут иметь некоторые другие примеры. На странице Википедии также есть несколько примеров, которые могут вас заинтересовать.
Основная идея примеров заключается в том, что кто-то может заставить ваш сайт выполнить действие, как если бы оно было совершено пользователем, когда пользователь действительно не знал, что это происходит, или не хотел, чтобы это произошло. Если у вас есть какие-либо действия на вашем сайте, которые являются разрушительными (то есть могут удалить что-либо из учетной записи пользователя, выйти из системы и т. Д.) Или критическими (то есть касаются денег), вам, вероятно, следует использовать токены CSRF. Если ваш сайт - просто фотоальбом для друзей и т. Д., То вам, вероятно, не нужно беспокоиться о токенах CSRF (хотя всегда полезно практиковаться, когда вы создаете сайт, который нуждается в них).
Если вы не добавите токен, чтобы убедиться, что запрос поступил от формы, которую ваш сайт представил пользователю преднамеренно, у вас не будет способа узнать, намеревался ли пользователь выполнить действие.
Таким образом, вы всегда хотите использовать уникальный токен в каждой форме, которую вы генерируете, и что POST-запросы на ваш сайт имеют действительный токен для текущего пользователя. Также убедитесь, что токены истекают через некоторое время, чтобы они не длились вечно.