跳到主要内容

CSRF跨站攻击

CSRF攻击会强制终端用户在当前对其进行身份验证后的Web应用程序上执行非本意的操作

CSRF攻击的着重点在伪造更改状态的请求,而不是盗取数据,因为攻击者无法查看对伪造请求的响应

image-20221011140656709

攻击流程

  1. 用户输入用户名和密码登录网站A
  2. 用户名密码正确网站A返回cookie,用户浏览器保存cookie
  3. 诱导用户访问恶意网站B,网站B存在构造好的恶意页面(隐藏表单,通过标签src属性,超链接发 起请求)
  4. 诱导用户点击按钮或访问构造好的恶意页面。
  5. 恶意页面利用用户网站A的合法cookie向网站A发送非用户本意的恶意请求

CSRF漏洞利用条件

用户成功登录网站A,并取得有效cookie 用户在未登出网站A的情况下在同浏览器下访问了恶意网站B

CSRF的防御方法

  • 验证Referer字段:如果Referer是其他网站的话,就有可能是CSRF攻击,则拒绝该请求。

  • 添加Token验证:可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token

    如果请求中没有token或者token内容不正确,则认为可能是CSRF攻击而拒绝该请求。

  • 二次验证:在转账等关键操作之前提供当前用户的密码或者验证码 用户养成良好的习惯一一不要随意点击链接和图片、及时退出长时间不使用的已登录账户、安装合适的安全防护软件

XSS和CSRF的区别

同:都可以利用用户cookie发起请求。 CSRF能做到的跨站请求伪造,XSS同样也可以实现

异: XSS是将恶意的代码插入到html页面中,当用户浏览页面时,插入的JavaScript代码会被执行,从而达到最终目的,而CSRF是一种欺骗受害者提交恶意请求的攻击,使受害者执行非本意、恶意的操作

其他角度:

  1. CSRF比XSS漏洞危害更高,相对XSS而言较难防御。(XSS主要打cookie,扫内网,扫端口组合其他漏 洞getshell,CSRF主要是利用用户cookie发起恶意非用户本意的请求)
  2. CSRF可以做到的事情,XSS都可以做到。(XSS同样可以利用打到的cookie发送请求)
  3. XSS有局限性,而CSRF没有局限性。(xss长度限制,CSRF无长度限制)
  4. XSS针对客户端,而CSRF针对服务端。(XSS是利用js勾住浏览器,CSRF是利用用户在浏览器的合法 cookie发起恶意请求)
  5. XSS是利用合法用户获取其信息,而CSRF是伪造成合法用户发起请求。