Data URI的猥亵利用

改写一个模板,发现别人的CSS里面有 data:image/png,查询了资料。这个是,Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入。data表示取得数据的协定名称,image/png 是数据类型名称,base64 是数据的编码方法,逗号后面就是这个image/png文件base64编码后的数据。
firefox浏览器和Opera浏览器都可以在地址栏输入下面的字符串,回车,可以看到页面显示hi!!!
data:text/html;charset=utf-8;base64,PGh0bWw+PGJvZHk+aGkhISEhPC9ib2R5PjwvaHRtbD4=
支持其他的格式:
data:,文本数据
data:text/plain,文本数据
data:text/html,HTML代码
data:text/html;base64,base64编码的HTML代码
data:text/css,CSS代码
data:text/css;base64,base64编码的CSS代码
data:text/javascript,Javascript代码
data:text/javascript;base64,base64编码的Javascript代码
data:image/gif;base64,base64编码的gif图片数据
data:image/png;base64,base64编码的png图片数据
data:image/jpeg;base64,base64编码的jpeg图片数据
data:image/x-icon;base64,base64编码的icon图片数据
base64简单地说,它把一些 8-bit 数据翻译成标准 ASCII 字符,网上有很多免费的base64 编码和解码的工具,
在PHP中可以用函数base64_encode() 进行编码。

<?php echo base64_encode(file_get_contents('http://www.baidu.com/img/bdlogo.gif'));?>
<img src=“http://www.baidu.com/img/bdlogo.gif”/>

<img src=”data:image/gif;base64,编码数据”/>
在XSS,或者隐藏可以利用,猥亵的东西自由发挥。例如:
<object data=data:text/html;base64,PHNjcmlwdD5hbGVydCgiS0NGIik8L3NjcmlwdD4=></object>
更加详细的资料:
http://en.wikipedia.org/wiki/Data:_URL

没有评论:

发表评论

Follow Us

FOLLOW US

Blog Archive

Comments

Blogger 提供支持.

Search This Blog

Tags

header ads