XSS、CSRF总结

XSS:跨站脚本攻击

xss实质上就是html,js代码注入,服务器不做任何处理,直接输出导致的攻击

发生的场景:
(1)数据从一个不可靠的链接进入到一个web应用程序。
(2)没有过滤掉恶意代码的动态内容被发送给web用户。
危害:

  1. 盗取各类用户账号
  2. 控制企业数据,读取,篡改,添加,删除敏感数据能力
  3. 盗窃企业重要资料
  4. 非法转账
  5. 强制发送电子邮件
  6. 控制受害者机器向其他网站发起攻击

攻击类型:

1.反射型(非持久型)(属于服务端安全漏洞)

  • 举例1:在URL后面加上参数,服务器根据请求的参数值返回不同的HTML,但是如果参数值为可在浏览器中被解析执行的东西,就形成了反射型XSS
    在这里插入图片描述
    因为自己不可能去修改url参数值,所以一般是别人修改了这个value值,然后将这个恶意的URL发送给你,然后你点击以后,恶意代码就会被HTML解析。

  • 举例2:生成一些有人的图片或文字,诱导你去点击,然后执行某些事。

  • 举例3:恶意跳转,打开网页,会默认跳转至指定的网站
    这种攻击的特点为非持久化,必须用户点击带有特定参数的链接才能引起。
    2.存储型(持久型)(窃取用户信息,cookie,token,账号密码等)(属于服务端安全漏洞)

  • 举例1:在留言板中输入XSS攻击代码,然后提交到服务器中,当用户查询留言时,留言的内容会被服务器当成正常的HTML和JS代码解析后加载出来,XSS攻击就发生了。

3.DOM型(DOM型攻击取出和执行恶意代码都是由浏览器完成,属于前端js自身的安全漏洞)
用户打开恶意代码的URL,用户浏览器接收到响应后解析执行,前端js取出url中的恶意代码执行,然后进行恶意操作。
防范手段:

  1. 对输入进行过滤
  2. 在服务端输出进行过滤
  3. 设置cookie httponly为true
CSRF:跨站请求伪造

危害:

  1. 以你的名义发送恶意请求(发送邮件,发送消息)
  2. 盗取账号,虚拟货币转账等

CSRF攻击原理:在受害者访问一个网站的时候,他的cookie还没有过期的情况下,攻击者伪造了一个链接地址发送给受害者,并诱惑他惦记,从而形成CSRF攻击
案例:
受害者A登陆某个网站bank,通过用户的身份认证成功登陆,网站bank产生cookie信息并返回给用户的浏览器,受害者A在没有登出网站bank的时候,被诱导访问了恶意网站B,网站B接收受害者A的请求后,返回一些攻击性的代码(要求访问bank,例如转账请求),然后浏览器执行恶意代码,在受害者A不知情的情况下携带cookie想网站bank发出请求,bank根据用户的cookie信息核实用户身份,然后进行转账操作。

在这里插入图片描述

CSRF 攻击是攻击者借助受害者的 Cookie
骗取服务器的信任,可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击服务器,从而在并未授权的情况下执行在权限保护之下的操作。简单来说,CSRF就是利用用户的登录态发起恶意请求。

防范手段:

  1. 验证码,进行重要敏感操作时,加入验证码
    CSRF攻击往往是在用户不知情的情况下发起了网络请求。而验证码会保证用户必须与应用进行交互,才能完成请求。
  2. 验证HTTP的Referer字段
    Referer 指的是页面请求来源。意思是,只接受本站的请求,服务器才做响应;如果不是,就拦截。
  3. 请求地址中添加Token并验证
    可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。

XSS与CSRF的对比
XSS是利用用户对网站的信任
CSRF是利用网站对用户的信任

区别: CSRF需要用户先登录网站A,获取cookie,XSS不需要 CSRF:是利用网站A本身的漏洞,去请求网站A的api。XSS:是向网站 A 注入 JS代码,然后执行 JS 里的代码,篡改网站A的内容。