以基于 utf-7 的 XSS 为例utf-7 是可以将所有的 unicode 通过 7bit 来表示的一种字符集 (但现在已经从 Unicode 规格中移除) 。这个字符集为了通过 7bit 来表示所有的文字, 除去数字和一部分的符号,其它的部分将都以 base64 编码为基础的方式呈现 。
1 2 3
<script>alert("xss")</script> 可以被解释为: +ADw-script+AD4-alert(+ACI-xss+ACI-)+ADw-/script+AD4-
可以形成「基于字符集的 XSS 攻击」的原因是由于浏览器在 meta 没有指定 charset 的时候有自动识别编码的机制 。所以这类攻击通常就是发生在没有指定或者没来得及指定 meta 标签的 charset 的情况下 。
所以我们有什么办法避免这种 XSS 呢?
记住指定 <meta charset=”utf-8″>
XML 中不仅要指定字符集为 utf-8 。而且标签要闭合
基于 Flash 的跨站 XSS基于 Flash 的跨站 XSS 也是属于反射型 XSS 的一种 。虽然现在开发 ActionScript 的产品线几乎没有了 。但还是提一句吧 。AS 脚本可以接受用户输入并操作 cookie 。攻击者可以配合其他 XSS(持久型或者非持久型)方法将恶意 swf 文件嵌入页面中 。主要是因为 AS 有时候需要和 JS 传参交互 。攻击者会通过恶意的 XSS 注入篡改参数 。窃取并操作cookie 。
避免方法:
严格管理 cookie 的读写权限
对 Flash 能接受用户输入的参数进行过滤 escape 转义处理
未经验证的跳转 XSS有一些场景是后端需要对一个传进来的待跳转的 URL 参数进行一个 302 跳转 。可能其中会带有一些用户的敏感(cookie)信息 。如果服务器端做302 跳转 。跳转的地址来自用户的输入 。攻击者可以输入一个恶意的跳转地址来执行脚本 。
这时候需要通过以下方式来防止这类漏洞:
对待跳转的 URL 参数做白名单或者某种规则过滤
后端注意对敏感信息的保护, 比如 cookie 使用来源验证 。
CSRFCSRF(Cross-Site Request Forgery) 。中文名称:跨站请求伪造攻击
那么 CSRF 到底能够干嘛呢?你可以这样简单的理解:攻击者可以盗用你的登陆信息 。以你的身份模拟发送各种请求 。攻击者只要借助少许的社会工程学得诡计 。例如通过 qq 等聊天软件发送的链接(有些还伪装成短域名 。用户无法分辨) 。攻击者就能迫使 Web 应用的用户去执行攻击者预设的操作 。例如 。当用户登录网络银行去查看其存款余额 。在他没有退出时 。就点击了一个 QQ 好友发来的链接 。那么该用户银行帐户中的资金就有可能被转移到攻击者指定的帐户中 。
所以遇到 CSRF 攻击时 。将对终端用户的数据和操作指令构成严重的威胁 。当受攻击的终端用户具有管理员帐户的时候 。CSRF 攻击将危及整个 Web 应用程序 。
CSRF 原理下图大概描述了 CSRF 攻击的原理 。可以理解为有一个小偷在你配钥匙的地方得到了你家的钥匙 。然后拿着要是去你家想偷什么偷什么 。
文章插图
文章插图
完成 CSRF 攻击必须要有三个条件:
用户已经登录了站点 A 。并在本地记录了 cookie
在用户没有登出站点 A 的情况下(也就是 cookie 生效的情况下) 。访问了恶意攻击者提供的引诱危险站点 B (B 站点要求访问站点A) 。
站点 A 没有做任何 CSRF 防御
你也许会问:「如果我不满足以上三个条件中的任意一个 。就不会受到 CSRF 的攻击」 。其实可以这么说的 。但你不能保证以下情况不会发生:
你不能保证你登录了一个网站后 。不再打开一个 tab 页面并访问另外的网站 。特别现在浏览器都是支持多 tab 的 。
你不能保证你关闭浏览器了后 。你本地的 cookie 立刻过期 。你上次的会话已经结束 。
上图中所谓的攻击网站 B 。可能是一个存在其他漏洞的可信任的经常被人访问的网站 。
预防 CSRFCSRF 的防御可以从服务端和客户端两方面着手 。防御效果是从服务端着手效果比较好 。现在一般的 CSRF 防御也都在服务端进行 。服务端的预防 CSRF 攻击的方式方法有多种 。但思路上都是差不多的 。主要从以下两个方面入手:
正确使用 GET 。POST 请求和 cookie
在非 GET 请求中增加 token
一般而言 。普通的 Web 应用都是以 GET、POST 请求为主 。还有一种请求是 cookie 方式 。我们一般都是按照如下规则设计应用的请求:
GET 请求常用在查看 。列举 。展示等不需要改变资源属性的时候(数据库 query 查询的时候)
POST 请求常用在 From 表单提交 。改变一个资源的属性或者做其他一些事情的时候(数据库有 insert、update、delete 的时候)
推荐阅读
- 请教如何提升老电脑性能,如何升级硬件?
- 如何提高老电脑性能?
- 大数定律与中心极限定理 简述中心极限定理内容
- 老电脑如何升级还能再战两年?
- 我的世界附魔最佳搭配 我的世界最佳附魔套装
- 哪些电影曾触动你的心?
- 家里5年前的破电脑想玩游戏怎么升级?
- 短视频运营教程 短视频运营怎么做
- 老电脑升级,怎么才能发挥最大性能?