Разрешить SVG в политике безопасности контента без «unsafe-eval» - PullRequest
0 голосов
/ 24 февраля 2019

SVG являются важной частью Интернета.Есть ли способ, чтобы SVG, созданные в Inkscape, работали с безопасными настройками заголовка Политики безопасности контента?

В моих SVG есть несколько ссылок "http: // ...", которые, очевидно, необходимы, иSVG больше не отображается правильно, когда они меняются "https".

Вот некоторые ссылки в моих SVG:

xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
rdf:resource="http://purl.org/dc/dcmitype/StillImage"

Я думал о замене ссылок ссылками, которые яслужить себе и вернуть копию оригинальных связанных ресурсов, но я считаю, что смысл этих ссылок не в этом.Это так?

Есть ли способ изменить такие SVG-файлы, чтобы полностью отбросить ссылки?

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Я обнаружил, что моя проблема на самом деле была другой природы, и я задал неправильный вопрос.Моя проблема связана с style="fill:..." в SVG, что привело к совершенно чёрной визуализации SVG в браузере.Это, очевидно, известная ошибка в Firefox , и существует, казалось бы, хороший обходной путь (который также учитывает дополнительные угрозы безопасности) путем установки отдельных заголовков CSP для ресурсов SVG.

0 голосов
/ 24 февраля 2019

Перечисленные вами «ссылки» являются только ссылками в очень специфическом смысле этого слова.Это пространство имен объявлений, которые определяют, какому диалекту XML принадлежит определенный элемент или атрибут.

Да, адреса в этих ссылках существуют. Но они никогда не будут вызываться. Это будут делать только «проверяющие интерпретаторы XML», и браузеры в их числе.Браузеры воспринимают эти «ссылки» только как уникальные строки.Если они знают строки, они будут отображать контент в соответствии с диалектом, который они представляют.Если нет, элемент / атрибут будет введен в DOM, но проигнорирован для фактического рендеринга - точно так же, как пользовательский элемент, который браузер не знает.

В SVG-файлах есть два пространства имен, предоставляемые Inkscape для браузеров.поймет:

Они сообщают браузеру, что автономный файл - SVG.Они должны быть включены (да, это немного упрощено для xlink), но не имеют никакого отношения к CSP.

...