Implicações de segurança de deixar os usuários renderizar arquivos SVG próprios

Eu pretendo deixar os usuários do site carregar seus próprios documentos SVG e renderizá-los com inkscape ou svg2pdf . Os usuários não serão autenticados ou passarão por um processo de inscrição trivial, então eu esperaria algumas tentativas de hack. Por conseguinte, devo apreciar quaisquer dicas sobre o que eu posso fazer para minimizar as ameaças de segurança.

  • A Inkscape parece não ser incomodada por tags de onload do JavaScript e, felizmente, processa o conteúdo sem que nada aconteça (o que disse, não consigo que o Firefox 10 tente uma checkbox de alerta usando essa abordagem).
  • Estou preocupado que uma marca poderia vincular a uma imagem de bitmap enorme ou mal formada usando um URI externo – o que, teoricamente, poderia travar o serviço. Existe uma maneira fácil de percorrer o documento XML para filtrar estes? Eu posso fazer isso com facilidade com o XMLReader, é claro, mas me pergunto se eu poderia ter que lidar com coisas como ‘onload’ (embora o Firefox simplesmente o rejeite como inválido, então talvez isso seja uma preocupação desnecessária). Sidenode: as imagens em si são aceitáveis, mas acho que exigiria que elas fossem data: inline data: ou URI de alvo aceitáveis ​​na lista branca, com limitações de tamanho de arquivo.
  • Existem diretrizes SVG (em particular o texto renderizado) que podem include o conteúdo do texto dos arquivos do sistema, como o /etc/passwd etc?
  • Uma abordagem que eu também poderia tomar é validação contra as especificações SVG. Esse é o assunto de outra pergunta que eu perguntei aqui .

Estou usando o PHP 5.2 com XMLReader e XMLWriter, embora outros sistemas baseados em stream PHP sejam aceitáveis. Os sistemas são OS X 10.6.8 para dev, e LAMP na produção.

Existem diretrizes SVG (em particular o texto renderizado) que podem include o conteúdo do texto dos arquivos do sistema, como o / etc / passwd etc?

Você precisa garantir que os ataques do XXE não sejam possíveis para sua implementação específica, veja aqui .