2011-09-02 2 views
1

Si une image d'un autre site, est chargé d'une page, puis écrit sur la toile comme un ingrédient partiel dans un composite, en utilisant:Pourquoi cette ligne toDataURL est-elle une erreur de sécurité?

context.drawImage(image, 0, 0, w, h); 

il semblerait tout aurait déjà eu lieu peu sûr sur le tirage au sort La toile. Pourquoi alors

window.location = canvas.toDataURL('image/png'); 

présente un message d'erreur. SECURITY_ERR; DOM Exception 18. Il n'apparaît pas comme étant plus dangereux que l'étape supplémentaire consistant à enregistrer l'image du site externe ailleurs en premier lieu.

Ma question n'est pas comment contourner ce problème, tant, ou ce que signifie l'erreur, mais plutôt,

Pourquoi est-ce sûr? Si la page est chargée par le serveur, l'action est sûrement attendue par l'auteur.

+0

Chargez-vous la page Web à partir du système de fichiers? Si c'est le cas, un certain nombre de conditions semblent déclencher l'exception 18 du système de fichiers local qui ne provient pas du site Web actuel: http://stackoverflow.com/questions/2704929/uncaught-error-security-err-dom-exception-18 . – jfriend00

+0

J'ai fait l'expérience de cela, mais même en cours d'exécution sur localhost, (comme j'avais lu dans le même lien) je reçois toujours la même exception avec une URL d'image externe. – datatoo

Répondre

5

Selon le document spec, une fuite d'informations peut se produire si des scripts d'une origine peuvent accéder à des informations (par exemple des pixels lus) à partir d'images d'une autre origine. L'inquiétude est qu'une application malveillante pourrait déduire des informations auxquelles elle n'aurait pas accès autrement en chargeant dans une image d'un autre domaine/origine (facilement fait avec des images) et en lisant le contenu des pixels. XHR a des protections intégrées pour empêcher les fuites XD. Les images ne le font pas.

+0

Merci, un lien très instructif. + 1 – datatoo

+0

absolument correct. Il peut également être utile de mentionner que les toiles dessinées avec des images d'un autre domaine sont considérées comme "sales" dans lesquelles le drapeau origine-propre du canevas est faux. Les toiles dessinées dynamiquement et contenant uniquement des images provenant du même domaine sont classées comme des toiles «propres». –

Questions connexes