【问题标题】:What is the sense of the CSRF-protection while using token in HTML在 HTML 中使用令牌时 CSRF 保护的意义是什么
【发布时间】:2018-01-29 16:57:36
【问题描述】:

我是网络安全和 CSRF 的新手。

我读过最流行的 CSRF 保护方法是将 CSRF-token 放在 HTML 形式或 META 标记中,以便在 JavaScript 中读取它以进行 AJAX 操作。

但我不明白在不同站点使用来自 cookie 的数据的黑客的意义是什么,可以读取 HTML 中的 CSRF 令牌的值并使用它向用户登录的站点发送请求。

请给我解释一下。

【问题讨论】:

  • 了解同源策略。攻击者无法读取令牌。
  • 我建议你去阅读更多关于这个主题的内容......现在你似乎并不了解 CRSF 的实际工作原理。 (维基百科有例子。)
  • 您应该观看一些有关 CSRF 和跨站点脚本 (XSS) 的 YouTube 视频。很有帮助!
  • “在不同站点使用来自 cookie 数据的黑客” — 黑客应该如何使用这些数据?它在用户和服务器之间是私有的。

标签: javascript html security csrf csrf-protection


【解决方案1】:

CSRF Token 的发明是为了防止来自生态系统之外的服务器上的操作。

在网络世界中,防止从原始站点发布表单(它可以是服务器上的任何其他操作)。

您在问如何,因此使用一些生成的令牌将隐藏字段放入表单中的简单技术,服务器可以确保它收到的 Post 请求来自站点的表单,而不是来自其他地方。

例如,如果我是攻击者并且您的表单没有这样的令牌,我可以在我的网站上创建一个表单,action 字段将指向您的服务器位置。

<form method="POST" action="http://your-site.com/transfer-mony.php">
   <input type="text" name="amount" value="100000" />
   <button>submit</button>
</form>

如果你有一个令牌并且你的服务器会在每个请求上验证它,我的表单中的帖子将被拒绝。

所以你问,好的,我可以去原始网站复制那个令牌,就是这样。

因此,基本上,令牌应该是一次性的,它们仅对下一个用户操作有效。 令牌可以包含一个用户IP,并用私钥签名,那么如果你将我的令牌复制给你,服务器将拒绝该请求,因为令牌内的IP与发送请求的客户端的IP不一致。

JWT,就是其中一种技术

今天更常见的做法(感谢Angular),是服务器返回一个带有令牌的Cookie,并且下一个请求必须在Headers请求。

注意,你的网站存在XSS漏洞,基本上可以绕过所有CSRF机制。

希望可以理解,如果不明白,可以去cmets问。

【讨论】:

  • 非常感谢您的详细解释)我不认为令牌在其他方面是随机的或唯一的。我认为令牌是不变的,所以,我无法理解它们如何在安全方面提供帮助)))
  • 另外,前几天我进入了PHP框架Laravel代码,我现在用它来创建在html表单中使用csrf-token机制的网站,看到一个40个随机字符的字符串用于生成令牌。
  • 顺便说一下,我认为随机字符串比基于IP的生成要好。因为黑客可以将链接提供给被攻击的用户,当他/她点击它时,会从用户的IP进行操作,不是吗?
猜你喜欢
  • 1970-01-01
  • 2013-07-20
  • 2014-09-01
  • 2015-11-01
  • 2014-01-23
  • 2016-05-19
  • 2017-03-19
  • 2011-09-07
  • 2012-04-10
相关资源
最近更新 更多