LINUX.ORG.RU

Безопасно ли разрешать юзерам встраивать SVG в сообщения?

 


1

1

Хотел бы разрешить на форуме юзерам добавлять в сообщения SVG-картинки как data-uri. Было бы удобно для встраивания всяких графиков и диаграмм (не надо заморачиваться с отдельным выкладыванием).

Это может нести в себе какие-то проблемы с безопасностью? Типа, если внутри SVG окажется яваскрипт который вылезет наружу в DOM страницы. Я не очень шарю в продвинутом SVG, не знаю какие там бывают варианты.

★★★★★

А юзеры будут сами формировать data-uri? Если нет (т. е. предполагается кнопка «выбрать файл и вставить в сообщение в виде data-uri»), то что мешает вместо этого отправлять SVG-шки на сервер файлами и просто хранить их там рядом с сообщениями, как делают все нормальные форумы?

intelfx ★★★★★ ()
Ответ на: комментарий от Vit

svg с других доменов

Через костыль, да.

санитайзит с собственного

Это как?

А можешь подробнее объяснить, в чем может быть проблема с безопасностью?

Я не спец в веб безопасности, но SVG позволяет встраивать JS, что само по себе дыра. Также можно указывать относительные путь в ссылках, но думаю с этим и так проблем быть не должно. В теории ещё можно надыбать эксплоит для встраиваемых изображений/шрифтов, которые могут быть вшиты в файл через base64. Но такие шрифты мало кто умеет импортировать, поэтому и проблемы нет.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Это как?

A вот так

Я не спец в веб безопасности, но SVG позволяет встраивать JS, что само по себе дыра.

Дыра это если до контекста страницы добраться, тогда можно секреты потырить. А если в замкнутом контейнере, то максимум DDoS.

Выпилить <script> не проблема. Вопрос в том, ради чего.

Vit ★★★★★ ()
Ответ на: комментарий от TikName

Не встречалось случайно, может где-то есть полный список, по какой конкретно причине надо выпиливать каждый из опасных тегов и атрибутов?

Vit ★★★★★ ()
Ответ на: комментарий от TikName

О, круто. Сенькс.

Судя по описанию, втыкать через <img src='...'> с same origin относительно безопасно. Даст только стили внешние подгрузить (и только в хроме), остальное зарубит.

Тогда вообще не понятно чего гитхаб так лютует.

Vit ★★★★★ ()
Ответ на: комментарий от Vit

По второй ссылке я увидел, что к сообщению прикреплён zip архив. Это и есть тот способ?

Под словом «санитайзят» я понимал немного другое — что в браузер отдаётся именно SVG, только очищенный от потенциально вредных конструкций.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

В архиве есть SVG, если включить его в readme с относительным путем, будет косяк как на картинке. Исходник можно экспортнуть самостоятельно на draw.io. Чтобы никто не думал, что я от скуки набил кривой SVG вручную.

Под словом «санитайзят» я понимал немного другое — что в браузер отдаётся именно SVG, только очищенный от потенциально вредных конструкций.

Так и есть. Гитаб отдает настолько очищеный SVG, что в нем ломается форматирование текста.

Vit ★★★★★ ()