我已经了解了CSRF以及如何使用“不可预测同步令牌模式”来防止它。但我并不太明白它的工作原理。
让我们看一个场景:
一个用户通过以下表单登录到网站:
<form action="changePassword" method="POST">
<input type="text" name="password"><br>
<input type="hidden" name="token" value='asdjkldssdk22332nkadjf' >
</form>
服务器还会将令牌存储在会话中。当发送请求时,它会将表单数据中的令牌与会话中的令牌进行比较。
那么当黑客可以编写JavaScript代码来执行以下操作时,这样做如何防止CSRF攻击:
- 向网站发送GET请求
- 接收包含请求表单的HTML文本。
- 搜索HTML文本以获取CSRF令牌。
- 使用该令牌发起恶意请求。
我有遗漏什么吗?