在 HTML 中使用令牌时 CSRF 保护的意义是什么
What is the sense of the CSRF-protection while using token in HTML
我是网络安全和 CSRF 的新手。
我读过最流行的 CSRF 保护方法是将 CSRF 令牌以 HTML 形式或在 META 标签中放置,以便在 JavaScript 中读取它 AJAX-动作。
但我不明白在不同站点使用 cookie 数据的黑客可以读取 HTML 中 CSRF 令牌的值并使用它向站点发送请求的意义是什么用户登录。
请给我解释一下。
CSRF 令牌的发明是为了防止来自生态系统外部的服务器上的操作。
在网络世界中,防止从原始站点post发送表单(它可以是服务器上的任何其他操作)。
你问的是如何,所以简单的技术将隐藏字段放入带有一些生成令牌的表单中,服务器可以确保它收到的 Post
请求来自站点的表单而不是其他地点。
例如,如果我是攻击者并且您的表单没有这样的标记,我可以在我的网站上创建一个表单,action
字段将指向您的服务器位置。
<form method="POST" action="http://your-site.com/transfer-mony.php">
<input type="text" name="amount" value="100000" />
<button>submit</button>
</form>
如果您有令牌并且您的服务器将在每次请求时验证它,我的表单中的 post 将被拒绝。
所以你问,好吧,我可以去原始站点复制那个令牌,就是这样。
所以,基本上,令牌应该是一次性的,它们只对下一个用户操作有效。
Token可以包含一个用户IP,并且用私钥签名,那么如果你把我的token复制给你,服务器会拒绝请求,因为token中的IP和发送请求的客户端IP不一致。
JWT,就是其中一种技巧
今天更常见的做法(感谢Angular),是服务器return一个带有令牌的Cookie,下一个请求必须将其放在请求的 Headers 中。
注意,你的网站有一个XSS漏洞你基本上可以绕过所有CSRF机制
希望大家看得懂,不懂的可以评论区问
我是网络安全和 CSRF 的新手。
我读过最流行的 CSRF 保护方法是将 CSRF 令牌以 HTML 形式或在 META 标签中放置,以便在 JavaScript 中读取它 AJAX-动作。
但我不明白在不同站点使用 cookie 数据的黑客可以读取 HTML 中 CSRF 令牌的值并使用它向站点发送请求的意义是什么用户登录。
请给我解释一下。
CSRF 令牌的发明是为了防止来自生态系统外部的服务器上的操作。
在网络世界中,防止从原始站点post发送表单(它可以是服务器上的任何其他操作)。
你问的是如何,所以简单的技术将隐藏字段放入带有一些生成令牌的表单中,服务器可以确保它收到的 Post
请求来自站点的表单而不是其他地点。
例如,如果我是攻击者并且您的表单没有这样的标记,我可以在我的网站上创建一个表单,action
字段将指向您的服务器位置。
<form method="POST" action="http://your-site.com/transfer-mony.php">
<input type="text" name="amount" value="100000" />
<button>submit</button>
</form>
如果您有令牌并且您的服务器将在每次请求时验证它,我的表单中的 post 将被拒绝。
所以你问,好吧,我可以去原始站点复制那个令牌,就是这样。
所以,基本上,令牌应该是一次性的,它们只对下一个用户操作有效。 Token可以包含一个用户IP,并且用私钥签名,那么如果你把我的token复制给你,服务器会拒绝请求,因为token中的IP和发送请求的客户端IP不一致。
JWT,就是其中一种技巧
今天更常见的做法(感谢Angular),是服务器return一个带有令牌的Cookie,下一个请求必须将其放在请求的 Headers 中。
注意,你的网站有一个XSS漏洞你基本上可以绕过所有CSRF机制
希望大家看得懂,不懂的可以评论区问