2011-09-02 4 views
1

Если изображение с другого сайта, загружается на страницу, а затем записываются на холст в качестве частичного ингредиента в композите, используя:Почему эта строка toDataURL вызывает ошибку безопасности?

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

, казалось бы, ничего небезопасного бы уже произошло на ничью в холст. Почему тогда бы

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

присутствует сообщение об ошибке. SECURITY_ERR; DOM Exception 18. Это не кажется более неуверенным, чем дополнительный шаг сохранения внешнего изображения сайта в другом месте.

Мой вопрос заключается не в том, чтобы обойти эту проблему, так много, или что означает ошибка, а скорее,

Почему это небезопасно? Если страница загружена сервером, то автор, безусловно, ожидает от автора.

+0

Вы загружаете веб-страницу из файловой системы? Если это так, ряд условий, по-видимому, вызывает исключение 18 из локальной файловой системы, которые не находятся на самом веб-сайте: http://stackoverflow.com/questions/2704929/uncaught-error-security-err-dom-exception-18 , – jfriend00

+0

Я действительно испытал это, но даже работая на локальном хосте (как я читал в той же ссылке), я все равно получаю такое же исключение с внешним URL-адресом изображения. – datatoo

ответ

5

В соответствии с spec утечка информации может возникнуть, если сценарии из одного источника могут получить доступ к информации (например, читать пиксели) из изображений другого источника. Беспокойство заключается в том, что вредоносное приложение может выводить информацию, которую в противном случае у него не было бы доступ, путем загрузки изображения из другого домена/источника (легко выполняемого с помощью изображений) и чтения содержимого пикселя. XHR имеет защиту, встроенную для предотвращения утечки XD. Изображений нет.

+0

Спасибо, очень информативная ссылка. + 1 – datatoo

+0

абсолютно правильно. Также может быть полезно упомянуть, что холсты, нарисованные с любыми изображениями из другого домена, считаются «грязными», в которых флаг «Исходный чистый» холста является ложным. Холсты, которые рисуются динамически и содержат только изображения из одного домена, классифицируются как «чистые» холсты. –

Смежные вопросы