XSS

概述

XSS:跨站脚本攻击(Cross Site Scripting),攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID等,进而危害数据安全。

XSS分为存储型XSS、反射型XSS、DOM型XSS

  • 存储型XSS的恶意代码存在数据库里
  • 反射型XSS的恶意代码存在URL里。
  • DOM型XSS属于前端JavaScript自身的安全漏洞,

    危害

  • 窃取cookies

  • 配合其他漏洞,如CSRF
  • 插入广告

防范

防止 HTML 中出现注入,防止 JavaScript 执行时,执行恶意代码。

  • 存储型XSS、反射型XSS
    • 纯前端渲染,但是还是要注意避免DOM型XSS漏洞(onload事件和href中的javascript:xxx)
    • 转义HTML
    • 白名单过滤
  • DOM型XSS
    • 如果不使用框架,避免直接使用innerHTML,尽量使用.textContent、.setAttribute
    • 避免内联事件(onClick,onLoad)等
    • set-cookies设置Http-Only

CSRF

概述

CSRF:跨站请求伪造(Cross-site request forgery),挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。

危害

攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账……造成的问题包括:个人隐私泄露以及财产安全

原理

image-20210921115900826.png
从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成两个步骤:

  • 登录受信任网站A,并在本地生成Cookie。
  • 在不登出A的情况下,访问危险网站B。

避免

  • cookies不随着跨域请求发送
  • 请求头中的Referer请求头来判断请求来源
  • 使用Token