这个csrf元数据标记
在页面中插入本质上是数字签名的内容,以验证进入应用程序服务器的请求实际上来自正确登录的用户。这有助于防止跨站点脚本(当您在另一个选项卡中登录GMail时,一个完全不相关的页面上的脚本会触发请求,比如GMail)。
我想澄清一下csrf元数据标记
它本身并不能阻止无关页面向您的GMail(或攻击目标的任何其他服务)发出请求,但csrf元数据标记
用于验证所述请求的有效性。无效的请求(即来自跨站点脚本尝试的请求)应无法通过验证,因此将被丢弃。
换句话说,从攻击者的角度来看:
之前csrf元数据
成功的跨站点脚本攻击允许恶意站点向web应用程序提交数据,使请求看起来好像是代表用户执行的。那么,假设您是一个web服务的管理员,在一个浏览器选项卡中,您登录到该服务的管理面板。如果在另一个选项卡中打开的恶意站点针对您的服务发起攻击,恶意站点可能会运行发出管理请求的脚本,例如从数据库中转储用户列表,窃取其他敏感数据,或可能损害、损坏或破坏服务中包含的数据,从服务器的角度来看,所有这些都是来自管理员本身的有效请求。这个csrf元数据标记
是一种签署请求的方式,有助于阻止此类尝试成功。
有一个更详细的解释在此处可用.
在Rails生成的页面上创建一个“查看源代码”也很有教育意义,您将看到CSRF标记的样子。