什么是 CSRF 攻击?如何避免?

什么是CSRF攻击?

CSRF(Cross-Site Request Forgery),中文称为跨站请求伪造,是一种利用用户在当前已登录的Web应用程序上执行非本意操作的攻击方法。

CSRF攻击的原理是什么?

以下是一个示例:

  1. 用户登录银行网站并保持登录状态,浏览器包含了用户在银行的身份认证信息。
  2. 攻击者在帖子中嵌入伪造的转账请求。
  3. 用户在继续保持登录状态的情况下浏览帖子。
  4. 攻击者将伪造的转账请求连同用户的身份认证信息发送到银行网站。
  5. 银行网站接收到请求时,由于包含了有效的身份认证信息,认为是用户的合法操作,从而导致用户资金损失。

如何防范CSRF攻击?

  • 检查Referer字段: 在HTTP头中,Referer字段记录了该请求的来源地址。通常情况下,访问一个受限制的页面的请求应来自同一个网站。因此,可以通过验证Referer字段的值来防范CSRF攻击。
  • 添加校验令牌(Token): 在HTTP请求中以参数的形式添加一个随机生成的令牌,并在服务器端建立一个拦截器来验证该令牌。如果请求中没有令牌或令牌内容不正确,则认为可能是CSRF攻击而拒绝该请求。
  • 多重校验敏感操作: 对于敏感操作,除了验证用户的身份认证信息外,还可以通过其他方式进行多重校验,如邮箱确认、验证码确认等。

标签: java, Java面试题, Java问题合集, Java编程, Java问题精选, Java常见问题, 计算机网络, 计算机网络面试题