本站已运行

攻城狮论坛

作者: 合肥清默
查看: 4204|回复: 49

主题标签Tag

more +今日重磅推荐Recommend No.1

所有IT类厂商认证考试题库下载所有IT类厂商认证考试题库下载

more +随机图赏Gallery

【新盟教育】2023最新华为HCIA全套视频合集【网工基础全覆盖】---国sir公开课合集【新盟教育】2023最新华为HCIA全套视频合集【网工基础全覆盖】---国sir公开课合集
【新盟教育】网工小白必看的!2023最新版华为认证HCIA Datacom零基础全套实战课【新盟教育】网工小白必看的!2023最新版华为认证HCIA Datacom零基础全套实战课
原创_超融合自动化运维工具cvTools原创_超融合自动化运维工具cvTools
重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)
链接已失效【超过几百G】EVE 国内和国外镜像 全有了 百度群分享链接已失效【超过几百G】EVE 国内和国外镜像 全有了 百度群分享
某linux大佬,积累多年的电子书(约300本)某linux大佬,积累多年的电子书(约300本)
乾颐堂现任明教教主Python完整版乾颐堂现任明教教主Python完整版
乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)
Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天
约21套Python视频合集 核心基础视频教程(共310G,已压缩)约21套Python视频合集 核心基础视频教程(共310G,已压缩)
最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程
最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器

几种极其隐蔽的XSS注入的防护

  [复制链接]
查看: 4204|回复: 49
开通VIP 免金币+免回帖+批量下载+无广告

XSS注入的本质就是: 某网页中根据用户的输入, 不期待地生成了可执行的js代码, 并且js得到了浏览器的执行. 意思是说, 发给浏览器的字符串中, 包含了一段非法的js代码, 而这段代码跟用户的输入有关.

常见的XSS注入防护, 可以通过简单的 htmlspecialchars(转义HTML特殊字符), strip_tags(清除HTML标签) 来解决, 但是, 还有一些隐蔽的XSS注入不能通过这两个方法来解决, 而且, 有时业务需要不允许清除HTML标签和特殊字符. 下面列举几种隐蔽的XSS注入方法:

IE6/7 UTF7 XSS 漏洞攻击

隐蔽指数: 5 ( m3 O# M" k( l
伤害指数: 5

这个漏洞非常隐蔽, 因为它让出现漏洞的网页看起来只有英文字母(ASCII字符), 并没有非法字符, htmlspecialchars 和 strip_tags 函数对这种攻击没有作用. 不过, 这个攻击只对 IE6/IE7 起作用, 从 IE8 起微软已经修复了. 你可以把下面这段代码保存到一个文本文件中(前面不要有空格和换行), 然后用 IE6 打开试试(没有恶意代码, 只是一个演示):
6 i' Y: c) Z" ?; A  n  J, z; s- O! y1 W" A
+/v8 +ADw-script+AD4-alert(document.location)+ADw-/script+AD4-

最容易中招的就是 JSONP 的应用了, 解决方法是把非字母和数字下划线的字符全部过滤掉. 还有一种方法是在网页开始输出空格或者换行, 这样, UTF7-XSS 就不能起作用了.

因为只对非常老版本的 IE6/IE7 造成伤害, 对 Firefox/Chrome 没有伤害, 所以伤害指数只能给 4 颗星.

参考资料:UTF7-XSS

不正确地拼接 JavaScript/JSON 代码段

隐蔽指数: 5 - H, h. h. y6 j8 n
伤害指数: 5

Web 前端程序员经常在 PHP 代码或者某些模板语言中, 动态地生成一些 JavaScript 代码片段, 例如最常见的:

var a = '';
$ o0 F0 f. o  }1 i+ K- N7 g. N$ G不想, $name 是通过用户输入的, 当用户输入a’; alert(1); 时, 就形成了非法的JavaScript 代码, 也就是XSS 注入了.
& K: I$ e' m0 d' _. h3 @! @# g# u: n. [4 z7 R: q( y$ Y7 a3 @/ t
在解决问题之前, 我们要思考问题的本质是什么? 本质在于程序员可以用字符串来控制整个世界, 却没有用正确的方法来生成正确的字符串, 而是采用了功能强大且原始的”手工字符串拼接”.
) s& [7 t% I; [* l' \* q
; W6 s3 i) h; ]. A只需要把上面的代码改成:( B# v* I- z& i4 W: p9 R

& M! j6 q% |" Bvar a = ;
7 g0 e' h+ w) I0 N& b8 G
* t7 h' {( ]2 G( w5 }& A* Q  Y) c% c' a! b9 s, n
去掉单引号, 利用 PHP 的 json_encode() 函数来生成表示字符串的字符串. 这样做是因为,最好用 json_encode() 函数来生成所有的 JSON 串, 而不要试图自己去拼接 . 程序员总是犯这样的错误: 自己去解析 HTTP 报文, 而不是用现成的成熟的库来解析. 用 json_encode() 的好处还在于, 即使业务要求”我要保留单引号”时, XSS注入也可以避免.

隐蔽指数最高级, 伤害所有的通用浏览器. 这种 XSS 注入方式具有非常重要的参考意义.

最后, 根据工作中的经验, 以及我自己和别人犯过的错, 我总结出一个定理: 没有一劳永逸的单一方法可以解决所有 XSS 注入问题.

有用的经验:

    1 p. e, R4 I4 V. J$ K
    输出 HTML 代码时 htmlspecialchars 输出 JavaScript 代码时 json_encode
  • 输入过滤应该用于解决业务限制, 而不是用于解决 XSS 注入(与严进宽出的原则相悖, 所以本条值得讨论)/ a7 Y7 g; C- l# F$ [+ T

讨论:

上文提到的经验第3条, 是一种”宽进严出”的原则, 和”严进宽出”原则是相悖的. 其实, 我认为不应该把”严进宽出”作为一条伪真理, 好像除了它其它的说法都不对了似的. “宽进严出”和”严进宽出”应该具有完全相等的地位, 根据实现的成本进行取舍.

例如, 用户的名字可以采用”严进宽出”原则, 不允许用户填写单引号, 大于号小于号等. 但是用户的签名呢? 难道就不能填单引号? 如果要走极端, 想找出一种银弹, 那么我能想到的就是对所有的输入一律进行 htmlspecialchars 和 json_encode(且不说解决不了 utf7-xss).

其实, XSS 注入的解决应该是和输出端相关的. 当需要输出到文本文件时, 过滤和转义都是无必要的. 当输出到 HTML 渲染引擎时, json_encode 是无必要的. 当输出到 JS 引擎时, htmlspecialchars 是无必要的

CCNA考试 官方正规报名 仅需1500元
回复 论坛版权

使用道具 举报

Sanitarium [Lv8 技术精悍] 发表于 2013-10-17 16:01:49 | 显示全部楼层
帮你顶下哈!!
回复 支持 反对

使用道具 举报

fm830612 [Lv8 技术精悍] 发表于 2013-10-18 22:19:01 | 显示全部楼层
这是什么东东啊
回复 支持 反对

使用道具 举报

sunball [Lv8 技术精悍] 发表于 2013-10-29 11:20:00 | 显示全部楼层
我是个凑数的。。。
回复 支持 反对

使用道具 举报

isslee [Lv8 技术精悍] 发表于 2013-11-9 12:41:48 | 显示全部楼层
回复 支持 反对

使用道具 举报

wwwsinakok [Lv8 技术精悍] 发表于 2013-11-10 19:23:30 | 显示全部楼层
回复 支持 反对

使用道具 举报

lharry [Lv8 技术精悍] 发表于 2014-3-23 17:53:18 | 显示全部楼层
路过,学习下,感谢攻城狮论坛
回复 支持 反对

使用道具 举报

baozun [Lv8 技术精悍] 发表于 2014-3-26 20:38:52 | 显示全部楼层
我抢、我抢、我抢沙发~
回复 支持 反对

使用道具 举报

gthj [Lv8 技术精悍] 发表于 2014-3-26 23:22:37 | 显示全部楼层
支持一下:lol
回复 支持 反对

使用道具 举报

jywjh [Lv8 技术精悍] 发表于 2014-3-27 09:07:20 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图浏览|手机版|网站地图|攻城狮论坛

GMT+8, 2026-7-5 16:07 , Processed in 0.107859 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.

Designed by ARTERY.cn