当前位置: 首页 > 知识库问答 >
问题:

在元标记中使用令牌进行CSRF保护-为什么不能被盗?

贡念
2023-03-14

建议在ajax调用中包含csrf预防令牌,将它们作为元标记包含在页面中,然后可以访问并包含在标题中。http://docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.html

这怎么不可利用?例如,如果示例。com将csrf令牌包含在一个元标记中,我是否可以创建一个包含一些javascript的恶意站点来调用示例。com,然后解析响应,找到meta标记,然后将令牌值注入我的恶意页面表单?

共有2个答案

郎德馨
2023-03-14

由于http://en.wikipedia.org/wiki/Same-origin_policy,在Alice浏览器chuck.com运行的脚本无法读取carol.com的内容。

chuck的剧本。com可以发送给carol。com,但它无法读取和解析其内容。

沃威
2023-03-14

CSRF令牌对于每个会话都是唯一的。一旦生成,它只对一次使用有效,与特定会话相关联。

恶意用户可能会生成一个,但这是特定于他们的浏览器会话的。简而言之,他们只会利用它来剥削自己。

至于通过JavaScript生成攻击,这实际上是一个独立于CSRF的问题。CSRF是维基百科中的一种攻击:

<img src="http://bank.example.com/withdraw?account=Alice&amount=1000000&for=Mallory"/>

防范恶意JavaScript是另一回事。站点通过清理用户输入、iframe沙箱和依赖同一源策略来保护自己免受XSS和其他类型JavaScript注入的影响。

TL;博士

如果您的站点正在运行其他人不受信任的JavaScript,那么您的问题比CSRF更大。

 类似资料:
  • 我读到,当使用JWT时,不需要防止CSRF攻击,例如:“由于您不依赖cookie,您不需要防止跨站点请求”。 但是,有一点我不明白:如果我将令牌存储在localStorage中(正如我在同一网站的教程中被告知的那样),那么攻击者如何防止通过读取我的localStorage而不是Cookie来伪造恶意请求呢? 由于它是在服务器端生成的,我不知道如何在客户机请求中使用令牌而不将其存储在客户机的某个地方

  • 我的问题是,对每个表单使用一个令牌,而不更新每个表单提交的令牌,安全吗?这能防止CSRF吗?

  • 我正在AngularJS SPA中使用资源所有者密码凭证OAuth 2.0流。有几篇文章(这里,这里…)这个问题的答案解释了我们不应该将刷新令牌存储在(web)客户端(LocalStorage)上,而是将它们加密存储在HttpOnly Cookie中,并使用代理API实现对refreh令牌的解密,从而将其转发给安全令牌服务。 大多数文章都暗示我们应该使用一种常见的保护机制来关注CSRF。我想知道单

  • 我试图使用Java8Javadoc工具,但它抱怨是一个未知标记: 我看到有一些方法可以禁用doclint,但我真的想知道哪些标签列表被支持(或者为什么这个不支持)。 更多信息在这个问题,这个问题和从这个博文。

  • 问题内容: 我正在构建一个通过webservices与symfony2应用程序对话的移动应用程序,我找不到在特定控制器/操作上禁用csrf保护的方法 我想将注册数据发布到此操作并使用sf2表单验证。我没有在移动应用程序中致电该表格 无法在操作中更改容器参数,因为它是冻结参数而引发异常… 我不想禁用整个应用程序的表单保护 有什么线索吗? 谢谢 ! 更新:使用symfony 2.1.x 问题答案: 如

  • 我想从Stormpath帖子中对JWT令牌和CSRF提出疑问,这些令牌和CSRF解释了将JWT存储在localStorage或Cookie中的优缺点。 [...] 如果您使用JS从cookie中读取值,这意味着您不能在cookie上设置Httponly标志,因此现在站点上的任何JS都可以读取它,从而使其与在localStorage中存储内容的安全级别完全相同。 我试图理解为什么他们建议将xsrfT