2011-09-02 20 views
1

別のサイトからの画像は、ページにロードされ、その後使用して、複合体中に部分的成分としてキャンバスに書かれている場合:なぜこのtoDataURL行がセキュリティエラーですか?

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

、それは安全ではない何かを思わはすでにへの引き分けで発生しているだろうキャンバス。 なぜ、

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

エラーメッセージが表示されます。 SECURITY_ERR; DOM Exception 18. と表示されないは、外部サイトイメージを他の場所に保存する余分なステップよりも安全ではありません。

私の質問はそんなに、どのようにこの問題を回避することはない、またはエラーが何を意味するのかではなく、

なぜこれが安全ではないでしょうか?ページがサーバーによってロードされている場合、そのアクションは確実に作成者によって予測されます。

+0

ファイルシステムからWebページをロードしていますか?もしそうなら、いくつかの条件が、実際のWebサイトからではないローカルファイルシステムからException 18を引き起こしているようです:http://stackoverflow.com/questions/2704929/uncaught-error-security-err-dom-exception-18 。 – jfriend00

+0

私はそれを経験しましたが、localhost上で実行していても(私は同じリンクで読んだので)、私はまだ外部の画像URLで同じ例外を取得します。 – datatoo

答えて

5

specによれば、一方の原点からのスクリプトが別の原点の画像から情報(例えば、読取り画素)にアクセスできる場合に情報漏洩が発生する可能性がある。心配するのは、悪意のあるアプリは、別のドメイン/原点(画像で簡単に行うことができます)からの画像を読み込み、ピクセルコンテンツを読み込むことによって、アクセスできない情報を推測することができるということです。 XHRには、XD漏れを防ぐための保護機能が組み込まれています。画像はありません。

+0

ありがとうございます、非常に有益なリンクです。+ 1 – datatoo

+0

絶対に正しいです。また、別のドメインの画像で描画されたキャンバスがキャンバスのorigin-cleanフラグがfalseである「汚れ」とみなされることにも役立ちます。動的に描画され、同じドメインの画像のみを含むキャンバスは、「クリーン」キャンバスとして分類されます。 –

関連する問題