csrf_meta_tag
вставляет на страницу то, что по сути представляет собой цифровую подпись, действуя как подтверждение того, что запросы, поступающие на сервер приложений, на самом деле, от правильно авторизованных пользователей.Это помогает предотвратить межсайтовый скриптинг (скрипт на совершенно не связанной странице запускает запрос на запуск, скажем, GMail, когда вы вошли в свой GMail на другой вкладке).
Полагаю, чтобы уточнить, csrf_meta_tag
само по себе не препятствует отправке несвязанной страницей запросов в ваш GMail (или любой другой сервис, являющийся целью атаки), но «цифровая подпись» в csrf_meta_tag
используется для проверки действительности указанных запросов,Неправильные запросы (т. Е. От попыток межсайтового скриптинга) должны не пройти проверку и поэтому отбрасываются.
С другой стороны, с точки зрения злоумышленника:
До csrf_meta_tags
(они не являются исключительными для Rails каким-либо образом), успешные атаки межсайтовых сценариев позволили вредоносному сайту передавать данные в веб-приложение таким образом, чтобы запрос выглядел так, как будто он выполняется от имени пользователя.Итак, предположим, что вы являетесь администратором веб-службы, и на одной вкладке браузера вы вошли в панель администратора этой службы.Если вредоносный сайт, открытый на другой вкладке, предназначался для вашей службы для атаки, он может запускать сценарии, которые отправляют запросы администратора, такие как удаление списка пользователей из базы данных, кража других конфиденциальных данных или потенциальный вред, повреждение,или уничтожение данных, содержащихся в сервисе, при этом все они (с точки зрения сервера) выглядят как действительные запросы от самого администратора.csrf_meta_tag
- это способ подписать запросы и помешать таким попыткам быть успешными.
Более подробное объяснение доступно здесь .
Это такженаучитесь делать «просмотр источника» на одной из ваших страниц, сгенерированных Rails, и вы увидите, как выглядит тег CSRF.