有CSRF的地方可能会有XSS漏洞
XSS和CSRF的区别
① XSS再不建立连接的情况下可以执行漏洞代码
CSRF必须要在登录状态下建立链接才能执行漏洞代码
② XSS主要指向客户端,而CSRF针对服务端。
③ XSS是利用合法用户获取其信息,而CSRF是伪造成合法用户发起请求。
④ CSRF相当于是XSS的基础版,CSRF能做到的XSS都可以做到。
⑤ XSS:跨站脚本攻击、诱骗用户点击恶意链接盗取用户cookie进行攻击、不需要用户进行登录、xss除了利用cookie还可以篡改网页等
CSRF:跨站请求伪造、无需获取用户的cookie而是直接冒充用户、需要用户登录后进行操作
3、CSRF如何防御
方法一、Token 验证:(用的最多)
(1)服务器发送给客户端一个token;
(2)客户端提交的表单中带着这个token。
(3)如果这个 token 不合法,那么服务器拒绝这个请求。
方法二:隐藏令牌:
把 token 隐藏在 http 的 head头中。
方法二和方法一有点像,本质上没有太大区别,只是使用方式上有区别。
方法三、Referer 验证:
Referer 指的是页面请求来源。意思是,只接受本站的请求,服务器才做响应;如果不是,就拦截。
原理
原理图
从上图可以看出,要完成一次CSRF攻击,受害者必须满足两个必要的条件:
(1)登录受信任网站A,并在本地生成Cookie。(如果用户没有登录网站A,那么网站B在诱导的时候,请求网站A的api接口时,会提示你登录)
(2)在不登出A的情况下,访问危险网站B(其实是利用了网站A的漏洞)。