Последствия для безопасности, позволяющие пользователям отображать собственные файлы SVG - PullRequest
4 голосов
/ 11 марта 2012

Я планирую позволить пользователям веб-сайта загружать свои собственные документы SVG и отображать их с inkscape или svg2pdf. Пользователи будут либо не аутентифицированы, либо пройдут простой процесс регистрации, поэтому я ожидаю несколько попыток взлома. Поэтому я должен ценить любые указания на то, что фильтрация я могу сделать, чтобы минимизировать угрозы безопасности.

  • Inkscape, похоже, не беспокоит Теги загрузки JavaScript и радостно отображает контент без каких-либо нежелательных действий (при этом я не могу заставить Firefox 10 выкашлять окно оповещения, либо используя это подход).
  • Я обеспокоен тем, что тег <image xlink:href /> может ссылаться на огромное или искаженное растровое изображение с использованием внешнего URI - что теоретически может привести к сбою службы. Есть ли простой способ просмотреть XML-документ, чтобы отфильтровать их? Конечно, я могу легко сделать это с XMLReader, но задаюсь вопросом, не придется ли мне иметь дело с такими вещами, как &#111;nload для «загрузки» (хотя Firefox просто отклонил его как недопустимый, так что, возможно, это бесполезно) Sidenode: сами по себе изображения приемлемы, но я думаю, что я бы либо потребовал, чтобы они были либо встроенными data:, либо целевыми URI-адресами, допустимыми в белом списке, с ограничениями размера файлов.
  • Существуют ли какие-либо директивы SVG (в частности, для визуализации текста), которые могут включать текстовое содержимое системных файлов, например /etc/passwd и т. Д.
  • Один из подходов, который я мог бы использовать, - это проверка соответствия спецификации SVG. Это тема другого вопроса, который я задал здесь .

Я использую PHP 5.2 с XMLReader и XMLWriter, хотя другие системы на основе потоков PHP были бы приемлемы. Системы OS X 10.6.8 для dev и LAMP на производстве.

1 Ответ

3 голосов
/ 12 марта 2012

Существуют ли какие-либо директивы SVG (в частности, отображающие текст), которые могут включать текстовое содержимое системных файлов, например / etc / passwd и т. Д.XXE-атаки невозможны для вашей конкретной реализации, см. Здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...