Comment autoriser la page Web à modifier le fichier svg de l'utilisateur, en toute sécurité?


eff

J'ai une page + javascript qui lit un fichier SVG d'utilisateur dans les données d'un <objet> HTML, puis modifie le DOM du SVG en utilisant javascript.

EDIT: L'utilisateur sélectionne un fichier dans son propre système de fichiers à l'aide d'un champ de saisie de type fichier.

Tout cela fonctionne bien dans Firefox, mais les bords et le chrome rechignent à citer la politique d'origine unique (si je comprends bien, le chrome crache

Empêche une image dont l'origine est «nulle» d'accéder à une image d'origine croisée.

tandis que edge refuse simplement de lire les données des objets).

Si je comprends assez bien la politique d'origine unique et les risques encourus, le refus de Edge et Chrome de jouer avec le SVG chargé est légitime. Premièrement, est-ce que je me trompe?

Deuxièmement, comment surmonter ce problème? Y a-t-il un moyen? Est-ce que le fait que l'utilisateur télécharge le SVG sur le serveur, puis le charge (afin qu'il partage l'origine comme ma page) fonctionnerait - et si oui, est-ce sûr?

Je recherche la "bonne" façon de faire cela: sans danger pour mon site, sans danger pour l'utilisateur, etc.

Merci


Questions similaires:

Toutes mes excuses si j'aurais dû faire quelque chose avec ces questions plutôt que de demander à nouveau. J'espérais qu'avec des techniques plus actuelles, une solution pourrait être trouvée.

Walle Cyril

Utilisez <svg>directement dans le HTML et mettez le fichier là-dedans.

Étant donné que l'utilisateur télécharge son propre fichier, il ne devrait y avoir aucun risque.

Vous devez toujours vérifier si le fichier svg est bien un fichier svg valide sans onload, <script>etc. à l'intérieur. Il est possible de valider svg sans l'exécuter. Utilisez une stratégie de liste blanche et faites-le avant de l'utiliser innerHTML. (Parce que les utilisateurs pourraient avoir reçu un fichier svg malveillant par message d'un attaquant par exemple). Ne faites jamais confiance à l'entrée de l'utilisateur.

Articles connexes