XSS 危害
- 窃取用户Cookie,获取用户隐私,盗取用户账号。
- 劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志、发送电子邮件等。
- 强制弹出广告页面,刷流量等。
- 传播跨站脚本蠕虫,网页挂马等。
- 结合其他漏洞,如 CSRF 漏洞,实施进一步的攻击。
| 原理 | 示例 | 备注 | 解决方案 | |
| XSS跨站脚本攻击(Cross Site Script) | 恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。 | 用户的 cookie 很容易由于网站的 XSS 漏洞而被盗取 | 非持久型 XSS持久型 XSS基于字符集的 XSS | cookie关键字段设置HttpOnly属性、X-XSS-Protection设置为1 |
| CSRF跨站请求伪造攻击(Cross-Site Request Forgery) | 攻击者可以盗用你的登陆信息,以你的身份模拟发送各种请求。 | 验证Referer字段、加验证码、使用token、cookie 的Samesite | ||
| SQL 注入 | 程序没有有效的转义过滤用户的输入,使攻击者成功的向服务器提交恶意的 SQL 查询代码,程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变,额外的执行了攻击者精心构造的恶意代码。 | 可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作,甚至有可能获取数据库乃至系统用户最高权限。 | SQL 查询是可以绕开访问控制,从而绕过身份验证和权限检查的 | |
| DDoS 攻击分布式拒绝服务(Distributed Denial of Service) | 利用大量合法的分布式服务器对目标发送请求,从而导致正常合法用户无法获得服务 | 利用网络节点资源如:IDC服务器、个人PC、手机、智能设备、打印机、摄像头等对目标发起大量攻击请求,从而导致服务器拥塞而无法对外提供正常服务,只能宣布game over, |
XSS
1.非持久型 XSS
非持久型 XSS 漏洞,也叫反射型 XSS 漏洞,一般是通过给别人发送带有恶意脚本代码参数的 URL,当 URL 地址被打开时,特有的恶意代码参数被 HTML 解析、执行。
2.持久型 XSS
持久型 XSS 漏洞,也被称为存储型 XSS 漏洞,一般存在于 Form 表单提交等交互功能,如发帖留言,提交文本信息等,黑客利用的 XSS 漏洞,将内容经正常功能提交进入数据库持久保存,当前端页面获得后端从数据库中读出的注入代码时,恰好将其渲染执行。
3.基于字符集的 XSS
其实现在很多的浏览器以及各种开源的库都专门针对了 XSS 进行转义处理,尽量默认抵御绝大多数 XSS 攻击,但是还是有很多方式可以绕过转义规则,让人防不胜防。比如「基于字符集的 XSS 攻击」就是绕过这些转义处理的一种攻击方式,比如有些 Web 页面字符集不固定,用户输入非期望字符集的字符,有时会绕过转义过滤规则。
可以形成「基于字符集的 XSS 攻击」的原因是由于浏览器在 meta 没有指定 charset 的时候有自动识别编码的机制,所以这类攻击通常就是发生在没有指定或者没来得及指定 meta 标签的 charset 的情况下。
所以我们有什么办法避免这种 XSS 呢 ?
1 . 记住指定
2 . XML 中不仅要指定字符集为 utf-8,而且标签要闭合
CSRF
CSRF 攻击必须要有三个条件 :
1 . 用户已经登录了站点 A,并在本地记录了 cookie 2 . 在用户没有登出站点 A 的情况下(也就是 cookie 生效的情况下),访问了恶意攻击者提供的引诱危险站点 B (B 站点要求访问站点A)。 3 . 站点 A 没有做任何 CSRF 防御
CSRF 的防御可以从服务端和客户端两方面着手,防御效果是从服务端着手效果比较好,现在一般的 CSRF 防御也都在服务端进行。
服务端的预防 CSRF 攻击的方式方法有多种,但思路上都是差不多的,主要从以下两个方面入手 :
1 . 正确使用 GET,POST 请求和 cookie
2 . 在非 GET 请求中增加 token
csrf攻击实战 cloud.tencent.com/developer/a…