XSS-知识点

XSS

xss相关危害,防御,原理等

危害

攻击者可以使用户在浏览器中执行其预定义的恶意脚本,其导致的危害可想而知,如劫持用户会话,插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器、繁殖XSS蠕虫,甚至破坏网站、修改路由器配置信息等。

常用的XSS攻击手段和目的有:

  • 盗用cookie,获取敏感信息。
  • 利用植入 Flash,通过 crossdomain 权限设置进一步获取更高权限;或者利用 Java 等得到类似的操作。
  • 利用 iframe、frame、XMLHttpRequest 或 Flash 等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
  • 利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
  • 在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。
  • xss钓鱼网站,利用JavaScript脚本直接放用户跳转到钓鱼网站
  • xss获取键盘记录,xss可以实现键盘操作,但是有局限性,不能跨域。

分类:

  • 反射型
    最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。
    就是利用get请求,往网页的url中加入特定的参数,欺骗用户执行这个url,后端服务器接收到恶意参数后,给前端用户反应恶意数据
  • 存储型
    最直接的危害类型,跨站代码存储在服务器(数据库)
    通过使用网页的提交功能(如留言板),将代码写入到后端文件或数据库中。
  • DOM型
    客户端脚本处理逻辑导致的安全问题。
    类似反射型,也是构造恶意url参数,但由浏览器直接执行js,可以脱离后端服务器

绕过

  • 常用思路:大小写、双写、编码(Unicode、html实体编码、url编码等)等方法
  • 替换其他标签,在标签内的各种事件执行js代码
  • http-only绕过思路:
    • 表单劫持:通过构造相同的表单将输入的帐号数据再发送一份给攻击者
    • 读取浏览器保存数据:有时候浏览器会保存该站点的密码可以通过xss漏洞来执行js代码获取浏览器保存的数据发送出来

防御

  • httpOnly:在 cookie 中设置 HttpOnly 属性后,js脚本将无法读取到 cookie 信息。主题
  • 输入过滤:一般是用于对于输入格式的检查,例如:邮箱,电话号码,用户名,密码……等,按照规定的格式输入。
    不仅仅是前端负责,后端也要做相同的过滤检查。因为攻击者完全可以绕过正常的输入流程,直接利用相关接口向服务器发送设置。
  • 转义 HTML:如果拼接 HTML 是必要的,就需要对于url中的引号,尖括号,斜杠进行转义,但这还不是很完善.想对 HTML 模板各处插入点进行充分的转义,就需要采用合适的转义库。
    例如:·htmlspecialchars()·函数把一些预定义的字符转换为 HTML 实体
  • 白名单:对于显示富文本来说,不能通过上面的办法来转义所有字符,因为这样会把需要的格式也过滤掉。
    这种情况通常采用白名单过滤的办法,当然也可以通过黑名单过滤,但是考虑到需要过滤的标签和标签属性实在太多,更加推荐使用白名单的方式。

XSS-知识点
https://coutcin-xw.github.io/2022/04/23/XSS-知识点/
作者
CoutCin
发布于
2022年4月23日
许可协议