Обеспечение безопасности холста
В отношении манипулирования пикселями, о чем говорилось в предыдущем разделе, необходимо сделать одно важное замечание. Хотя подобные манипуляции в большинстве случаев используются как вполне законное средство разработки, нельзя исключить того, что возможность извлечения данных из холста или внесения в него изменений может быть использована в злонамеренных целях. По этой причине было введено понятие чистоты происхождения (origin-clean) холста, а извлечение данных из холстов, загрязненных (tainted) изображениями, которые поступили от источников, отличных от источника самой страницы, сделано невозможным.

Как показано на рисунке, если страница, обслуживаемая сайтом www. example. com, содержит элемент canvas, то не исключено, что код страницы может пытаться визуализировать на холсте изображение с сайта www.remote.com. В конце концов, в попытках визуализировать на веб-странице изображения, полученные с удаленных сайтов, нет ничего предосудительного.
В то же время, до появления спецификации HTML5 Canvas извлечение пиксельных значений загруженного изображения программными средствами было невозможно. Коммерческие изображения, поступающие с других сайтов, можно было отображать на странице, но не считывать или копировать. Предоставление сцена
риям возможности считывать данные изображений из других источников фактически означало бы открытие доступа к личным фотографиям пользователя и другим критически важным файлам изображений для всех пользователей Интернета.
Чтобы этого избежать, любой элемент canvas, который содержит изображения, визуализированные из удаленных источников, в случае вызова функции getlmageData () будет генерировать исключение безопасности. Вполне допустимо визуализировать на холсте изображения из другого источника, коль скоро вы (или какой-то другой разработчик сценариев) не пытаетесь извлечь данные из холста, после того как он был "загрязнен". Не забывайте об этом ограничении и придерживайтесь практики безопасной визуализации.
Источник: Блог web программиста.