在DOM中使用SVG时不加载外部CSS

时间:2014-12-17 09:28:50

标签: html css svg

查看以下jsFiddle 在IE中,加载外部CSS并且矩形为红色,而在Chrome和FF中,矩形保持黑色。

为什么?

<!-- Used to reference the external css -->
<?xml-stylesheet href="mystyle.css" type="text/css"?>

1 个答案:

答案 0 :(得分:1)

如果在图像上下文中使用SVG,即通过html`'标记或CSS背景图像,则必须在单个文件中完成,否则您将隐私泄露。

如果您将CSS包含从外部文件更改为内部数据网址,您会发现它可以在Chrome和Firefox中使用。如果您认为SVG作为图像的功能与光栅图像类似,那么在所有光栅图像由单个文件组成后,您就不会出错。

考虑一个允许SVG图像作为头像的假设论坛。如果允许外部加载,骗子/恶意用户可以上传包含<image xlink:href="http://evilhacker.com/myimage.png">的SVG文件 (假设他们控制evilhacker.com),他们可以做任何&amp;以下所有内容:

  • 每当有人查看他们的个人资料时,都会在他们自己的域中收到ping(并记录查看该人的IP地址)
  • 可能会根据其IP地址,请求标题等向不同的人提供看起来不同的头像
  • 可能随意更改其头像的外观(即等待论坛管理员批准它竖起大拇指,然后将其更改为NSFW)