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