如果我使用数据URI来构造HTML元素的src属性,那么它里面又可以有另一个数据URI吗?
我知道您不能为iframe使用数据uri(我实际上是在尝试构建OSDX文档,并使用以base64编码的图标将其传递给浏览器,但这确实是一个利基用例,这更是一个普遍的问题) ,但假设您可以,我的用例将如下所示:
var iframe = document.createElement('iframe');
var icon = document.createElement('image');
var iSrc = 'data:image/png;base64,/*[REALLY LONG STRING]*/';
iframe.src='data:text/html,<html><body><image src="'+iSrc+'" /></body</html>
document.body.appendChild(iframe);
基本上,我所追求的是数据uri中是否有任何东西会破坏父数据uri?
数据URI可以嵌套。
一个旧的博客条目讨论了更多有关使用CSS将图像嵌入CSS的信息data:
:
dataURI规范和任何其他都没有提及dataURI是否可以嵌套。因此,这是一个测试案例,其中dataURI's CSS嵌入了dataURI'ed图像。IE8b1,Firefox3和Safari应用了样式表并显示了图像,Opera9.50(内部版本9613)应用了样式表,但未显示嵌入的图像!因此,似乎Opera9并不希望将任何东西嵌入已经嵌入的资源中!:D
但是有趣的是,由于IE8b1支持表达式并且还支持嵌套数据URI,因此它具有与Firefox相同的潜在安全漏洞(如上节所述)。请参见测试用例—嵌入式CSS具有以下代码:
body { background: expression(a()); }
该代码调用a()
主页javascript中定义的函数,并且每次重新计算表达式时都调用此函数。尽管IE8b1支持有限的表达式(这将在另一篇文章中进行解释),但您不能使用任何代码作为表达式值,但是您只能调用已定义的函数或使用直接字符串值。因此,为了利用此功能,我们需要在页面上已有一个现成的javascript函数,然后我们可以从样式表中嵌入的表达式进行调用。显然,这并不是一件容易的事,但是如果您拥有一个允许人们指定自己的样式表的网站,并且希望安全起见,则必须确保您没有使用可能导致任何潜在危害的javascript函数或从人们的样式表中过滤表达式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句