XSS与CSRF

82

- XSS是什么

    • XSS (Cross Site Scripting) 跨域脚本攻击
    • 实质:
      • 攻击者往web页面中插入恶意的script代码,当用户浏览该页面是,嵌入其中的web里面的脚本会被执行,从而达到恶意攻击用户的目的
    • 完成攻击的两个条件:存在恶意代码,当前恶意代码被执行 
    • XSS会造成什么后果:恶意代码可能会窃取用户数据并发送到攻击者的网站,或者冒充用户行为,调用目标网站接口执行攻击者指定的操作
    • XSS攻击的三种类型
      • 反射性攻击(关键词:url(恶意链接,搜索,链接跳转等),不存储到服务器)
        • 攻击者构造出特殊的url,其中包含恶意代码,当用户打开带有恶意代码的url时,服务器接收到这个url对应的请求,读取其中的参数没有进行过滤就拼接到html中,浏览器接收之后响应并执行了其中的恶意代码
      • 存储型攻击 (关键词:存储到服务器、论坛发帖/评论)
        • 攻击者将含有恶意代码的内容发送给服务器,服务器端没有过滤就将内容存储到数据库中,下次再请求这个页面的时候服务器从数据库读取内容拼接到html上,浏览器收到之后解析执行
      • dom类攻击 (关键词:前端对用户的输入未做过滤,就进行拼接到html中)
        • 前端对用户的输入未做过滤,就进行拼接到html中
    • 实例:
      • 存储型攻击:在网页input或者textarea中输入 
      • 反射型攻击:直接使用url参数攻击 www.baidu.com?test=
    • 如何防御
      • 过滤
        • 移除用户输入的一些和事件相关的属性,如style,iframe,script,onclick等,前后端都需要进行过滤
      • 转义HTML
        • & <> ‘’' /  进行转义处理(并不完善,需要定制更细致的转义策略,或者使用一些转义库)
      • 使用纯前端渲染,将代码和数据分隔开(使用Ajax来渲染数据,本意是想避免HTML的拼接,但是如果对SEO有要求还是没法避免的)

- CSRF是什么

    • CSRF(Cross-site request forgery)跨站伪造请求
    • 实质:简单说就是在其他网站埋入一个URL,等用户访问这个URL,就会发出请求,由于是同源,浏览器会自动携带用户的Cookie。
    • CSRF的危害
      • 利用你的身份去发邮件、发短信、进行交易转账之类的,盗号,传播恶意代码
    • CSRF如何防御
      • 将cookie设置为httpOnly (?好像适用于XSS了)
      • Token验证(常用):在请求中放入攻击者不能进行伪造的信息,并且该信息不存在于cookie之中
      • 隐藏令牌:把token隐藏在http的head头中
      • Referer验证:Referer指的是页面请求来源,只接受本站的请求,服务器才做相应;如果不是,就拦截 - XSS和CSRF之间的区别是什么
    • 区别一:CSRF需要用户先登录网站A,获取到cookie,而XSS是不需要进行登陆的
    • 区别二:CSRF是利用网站A本身的漏洞,去请求网站的api,XSS是向网站A中注入恶意代码,然后执行来达到攻击目的(CSRF可以理解为用户盗用了你的身份,以你的名义向目标网站发送恶意请求 )
  • 参考链接:blog.csdn.net/wuhuagu_wuh…
  • 阅读链接:美团技术团队:tech.meituan.com/2018/09/27/… 这个是最近看跨域的同源策略时看到的 没有同源策略约束的话,浏览器很容易受到XSS与CSRF的攻击 于是就去看了一些相关文章,如有不对或是遗漏,麻烦大佬指出