2014-12-17 2 views
0

Посмотрите на следующие jsFiddle.
В IE загружается внешний CSS, а прямоугольник красный, вместо этого в Chrome и FF прямоугольник остается черным.SVG не загружает внешний CSS при использовании в DOM

Почему?

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

Является ли внешний источник загружен вообще? –

ответ

1

Если SVG используется в контексте изображения т.е. через HTML `» тега или как CSS фоновое изображение, то оно должно быть завершено в одном файле, в противном случае у вас есть утечка конфиденциальности.

Если вы измените CSS-код из внешнего файла на внутренний URL-адрес данных, вы обнаружите, что он работает в Chrome и Firefox. Если вы представляете, что возможности SVG как изображения похожи на растровые изображения, вы не ошибетесь, ведь растровые изображения состоят из одного файла.

Рассмотрите гипотетический форум, который позволяет изображениям SVG в качестве аватаров. Если внешняя нагрузка была разрешена, обманщик/злонамеренный пользователь может загрузить файл SVG, который содержит <image xlink:href="http://evilhacker.com/myimage.png"> и (при условии, что они контролируют evilhacker.com), они могли бы сделать какую-либо & все следующее:

  • получить пинг на их собственный домен всякий раз, когда кто-то просматривает их профиль (& журнал IP-адрес лица, просматриваемой его)
  • потенциально служить иной вид аватара для разных людей на основе их IP-адрес, запрос-заголовки и т.д.
  • потенциально изменить внешний вид их аватара по желанию (т.е. дождаться, что администраторы форума одобрят его bs-up, а затем изменить его как NSFW)
+0

Хорошо, это работает, если 'CSS' написан в SVG, но почему IE загружает таблицу стилей, если она связана? И что вы имеете в виду с утечкой конфиденциальности? –

+0

Вам нужно спросить разработчика IE. Я дал более подробную информацию о дыре конфиденциальности в ответе. –

+0

Спасибо, теперь имеет смысл, и я понял проблему. Где я могу найти разработчика IE? –

Смежные вопросы