Я планирую позволить пользователям веб-сайта загружать свои собственные документы SVG и отображать их с inkscape
или svg2pdf
. Пользователи будут либо не аутентифицированы, либо пройдут простой процесс регистрации, поэтому я ожидаю несколько попыток взлома. Поэтому я должен ценить любые указания на то, что фильтрация я могу сделать, чтобы минимизировать угрозы безопасности.
- Inkscape, похоже, не беспокоит Теги загрузки JavaScript и радостно отображает контент без каких-либо нежелательных действий (при этом я не могу заставить Firefox 10 выкашлять окно оповещения, либо используя это подход).
- Я обеспокоен тем, что тег
<image xlink:href />
может ссылаться на огромное или искаженное растровое изображение с использованием внешнего URI - что теоретически может привести к сбою службы. Есть ли простой способ просмотреть XML-документ, чтобы отфильтровать их? Конечно, я могу легко сделать это с XMLReader, но задаюсь вопросом, не придется ли мне иметь дело с такими вещами, как onload
для «загрузки» (хотя Firefox просто отклонил его как недопустимый, так что, возможно, это бесполезно) Sidenode: сами по себе изображения приемлемы, но я думаю, что я бы либо потребовал, чтобы они были либо встроенными data:
, либо целевыми URI-адресами, допустимыми в белом списке, с ограничениями размера файлов.
- Существуют ли какие-либо директивы SVG (в частности, для визуализации текста), которые могут включать текстовое содержимое системных файлов, например
/etc/passwd
и т. Д.
- Один из подходов, который я мог бы использовать, - это проверка соответствия спецификации SVG. Это тема другого вопроса, который я задал здесь .
Я использую PHP 5.2 с XMLReader и XMLWriter, хотя другие системы на основе потоков PHP были бы приемлемы. Системы OS X 10.6.8 для dev и LAMP на производстве.