CSRF - 969251639/study GitHub Wiki
CSRF攻击的全称是跨站请求伪造(cross site request forgery), 是一种对网站的恶意利用,一般以你的名义向第三方网站发送恶意请求。举个例子,你访问网站A一个链接A,这时你还没有退出网站A,然后访问网站B,网站B中的一个按钮或图片什么的内嵌了链接A,那么点击这些图片或按钮时就会发一个http请求访问链接A,同时也会带上浏览器的cookie,而服务端验证了cookie的数据无误后以为是用户在网站A上正确的操作
CSRF说白了就是利用浏览器的cookie的不安全性,跨站点的项目表发起伪装的请求,已达到攻击目的,一般会已下面三种方式防范:
-
cookie设置HttpOnly
cookie设置了HttpOnly属性后,其他站点就无法读取到本站点的cookie信息,避免cookie被其他网站截取后对其进行攻击 -
令牌
CSRF是伪造请求,那么就通过令牌token来验证是否是伪造的请求,前端访问服务器时都会以一种算法生成随机的token,服务器也已相同的算法验证token,因为攻击者无法生成token,服务器就可以拒绝这些非法请求来达到防范CSRF的攻击 -
Http Referer 客户端通过http协议访问服务器都会在http的头部带一个Referer属性,来告知客户端是谁,也就是http请求的原地址,因此如果是跨站点,那么这个头部的Referer信息肯定不是源地址,而是攻击者的跨站网点,服务器可以识别这个头部信息来确认发起的请求是否是合法的发起点