使用随机生成的CSRF token:在用户进行敏感操作时,服务器会生成一个随机的token并将其与用户的会话关联。当用户提交请求时,服务器会验证token的有效性,如果token与会话不匹配,则拒绝请求。
验证Referer头部:服务器可以验证请求头中的Referer字段,确保请求来自合法的页面。然而,这种方法并不可靠,因为Referer头部可能被篡改或者被浏览器禁用。
使用SameSite属性:设置cookie的SameSite属性为Strict或者Lax,这样可以限制浏览器在跨站点情况下发送cookie,从而减少CSRF攻击的风险。
使用双重提交cookie策略:在用户会话中设置一个随机生成的cookie,并在每个请求中包含这个cookie的值。当用户提交表单时,服务器会验证提交的cookie与会话中的cookie是否匹配,以此来防止CSRF攻击。
验证请求来源:服务器可以验证请求的来源是否合法,比如检查请求头中的Origin字段或者校验请求的ip地址。如果请求来源不合法,则拒绝请求。
总的来说,要有效防止CSRF攻击,需要使用多种方法结合起来,包括使用CSRF token、验证Referer头部、设置SameSite属性、使用双重提交cookie策略和验证请求来源等。