0×01 标签属性里的那些事
比如img标签的src属性、div的style属性、a标签的href属性 等等
以下代码,a标签的href属性
<a href="javascript:alert( 'XSS')">点击我</a>
(备注 j为十进制的编码 j 为16进制的编码,他们之间中间多了个x,你懂的16进制0x01的x就是代表16进制)
把以上代码放在浏览器上运行看效果源代码
<a href="javascript:alert('xss')">点击我</a>
这个过程貌似为
A攻击者请求(恶意代码)—–服务器端接收我这个编码的代码,并判断是否存在恶意代码,如果不存在则返回给浏览器———–浏览器则负责解析我这个编码的代码——–攻击代码已经呈现(备注:好像是这样的,如果不对,望大牛们指点啊)
接下来我们再分析下 标签属性是否可以解析\u003c、\x3c 等编码
<a href="\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74\x3a\x61\x6c\x65\x72\x74\x28\x31\x29">test</a>
经过测试,浏览器的属性解析不识别这种,那这个在什么时候识别呢?请看下面介绍。
0×02 标签的事件与script标签
对于上面的问题我在这里做出来onerror=”alert(‘\x6a’)” 这样就没问题啦。
接下来我们来看看这个script标签
var t="\u003cimg src=x onerror=alert(1)\u003e"; document.write(t); alert("\x3c");
以上代码都可以识别,有木有找出规律?
但是这样的代码 能被解析,但不能被执行
var x="<img src=x onerror=alert(2)>"; document.write(x);
你们可根据以上这些规律,编写出适合自己业务的代码过滤方法
你现在了解style属性里面的expression过滤是否有用,是否考虑到编码的情况?
0×03 总结
这些字符编码,是很多开发者容易忽略的。望看了这篇文章,对你开发安全的网站程序 有帮助