同站Cookie(same site cookie)是目前最有效的CSRF(跨站请求伪造)防御方法之一,但有些情况下可能不够安全。例如,如果用户在执行操作(如点击链接或提交表单)之前转到了另一个站点,同站Cookie将无法保护他们的操作。为了解决这个问题,可以使用X-CSRF-TOKEN或X-XSRF-TOKEN。
这两种方法都是通过将一个加密令牌添加到表单或请求头中来防止CSRF攻击。这个令牌是由服务器生成的,并与用户会话相关联,从而确保它是唯一的。当用户尝试提交表单或请求时,服务器会检查这个令牌是否与用户会话中的相匹配。如果没有,服务器将拒绝操作。
以下是使用Laravel框架的X-CSRF-TOKEN的示例:
- 在HTML表单中添加以下代码:
<form method="POST" action="/your-action">
@csrf
<!-- other form fields -->
</form>
- 在JavaScript请求中添加以下代码:
axios.post('/your-action', {
data: {
// request data
},
headers: {
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content')
}
});
您还可以使用X-XSRF-TOKEN,它是angular框架中使用的名称。只要确保您在服务器端正确验证令牌即可。