XSS攻击和CSRF攻击解析

1. XSS攻击

XSS攻击是跨站脚本攻击,会在浏览器中注入脚本,进行篡改网页,在用户使用浏览器时,就会获取用户的隐私数据的过程。

  • XSS分类

    • 反射型

    • 存储型

    • 基于DOM型
      a. 反射型:用户在网页中输入的内容经页面提交到服务器后,服务器没有对该数据进行存储到数据库,而是原封不动的反射回页面中,即用户输入什么内容,服务器就将其原封不动的显示到页面中,从而让用户立即被攻击。最常见的就是搜索引擎,当我们搜索一个无法搜索到的内容时,搜索引擎通常会直接在页面中提示,该内容无法搜索到,此时如果用户搜索的内容中包含一些攻击性的脚本同时服务器又没有对这些内容进行处理,那么就会被攻击.
      在这里插入图片描述
      b.存储型:用户在网页中输入的内容经页面提交到服务器后,服务器将该数据先原封不动的存储到数据库中,等到其他用户访问该网站的时候,从服务器中读取出数据,从而让其中包含的脚本执行,所以存储型不是立即被攻击,而是等其他用户访问该网站的时候才生效。

      反射型和存储型XSS的区别是看用户提交的数据有没有被服务器存储起来和是否是立即攻击

      c.基于DOM:使用到的数据没有经过服务器,而是直接从DOM、Window等对象中获取,比如,document.location、document.URL、document.referrer,将这些数据插入到DOM中后导致的XSS攻击。比较常见的就是,当我们在某个网站注册成功后,通常会跳转到一个验证页面,验证页面内容主要包括多少秒之后自动跳转到某个页面,或者点击链接立即跳转到某个页面

      基于DOM类型的XSS攻击关键是数据没有经过服务器,而是来自于DOM操作

  • XSS的防御

    • 盗取用户的cookie,获取用户的账户和密码,存在严重的安全隐患,将用于登录相关的cookie设置为httpOnly,避免被客户端脚本直接读取(禁止客户端通过js获取session对应的cookie)
    • 对用户输入和输出进行过滤,对其中注入的脚本进行转义

2. CSRF

  1. 跨站请求伪造,通常会通过一个图片或者链接并诱导用户去点击,当用户点击这个图片或者链接后,这个链接通常包含了一些攻击性的操作和参数,即所谓的伪造的请求,就会以用户的身份向服务器发起这个伪造的请求,服务器收到这个伪造的请求后,就会认为是用户自己许可的操作,导致用户数据丢失等。
  2. 由于CSRF是伪造用户请求,并且以用户的身份向服务器发起请求,导致用户数据丢失,所以用户必须先登录获取对应的登录cookie之后,伪造的请求才会生效,才会导致用户数据丢失。所以CSRF攻击的前提条件是:
  • 用户必须先登录信任网站,并且在本地生成对应的cookie;
  • 在用户没有登出的情况下,访问了危险网站
  • CSRF防御

    CSRF攻击成功的关键在于,服务器无法识别该请求是不是用户授权的。所以要想防御CSRF攻击,那么我们需要让服务器知道这个请求的真伪

    • 增加token校验: 用户登录成功后,服务器生成一个token返回给客户端,客户端收到token后将其放到cookie或者localStorage中存储起来,cookie和localStorage都是无法跨域访问的,所以攻击者无法拿到其中的数据,然后每次发起请求的时候都带上这个token,服务器校验这个token成功后才会响应该请求。

    • 校验请求头的referer属性值: 对于点击某个网站(非本网站自己)上的链接后发起的请求,那么请求头会带上referer属性,值为该点击链接所在的网站的url地址,所以我们可以根据请求头的referer属性来判断请求是否是来自本网站,如果不是则可用识别为CSRF攻击

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值