我查看了以下SO示例,该示例说明必须在URL发布数据中放置唯一令牌。
这样,如果有人创建了像http://example.com/vote/30
这样的网址,那么它就不会工作,因为它不包含唯一令牌。
我也正在阅读这个tutorial,它在标题中放置了一个XSRF-TOKEN。我只是好奇这是如何提供保护的,因为如果用户已登录并点击http://example.com/vote/30
,该请求仍然无法通过?
换句话说,如果我已登录并且有人在电子邮件中向我发送http://example.com/vote/30
链接并点击它,那么该链接仍然无法通过CSRF检查,或浏览器是否会发送所需的标题,因为链接很可能会在新标签中打开?
似乎点击链接时新选项卡将请求页面。但是,新的浏览器窗口与登录的浏览器窗口不具有相同的XSRF-TOKEN?我理解正确吗?
答案 0 :(得分:1)
上面的这篇文章很好地解释了CSRF攻击的样子。基本前提是您不希望恶意网站使用您在其他网站上的有效会话。您可以使用CSRF令牌来防止这种情况。恶意网站无法访问此令牌,因此他们无法代表您发出任何POST请求。
使用Spring Security时,默认情况下启用CSRF保护。使用受支持的HTML模板引擎(如Thymeleaf)时会自动配置令牌,但您可以按照文档轻松自行设置。