Можно ли рассматривать URL-адреса Blob как средство предотвращения копирования изображений пользователями из консоли разработчика? - PullRequest
0 голосов
/ 27 мая 2020

Как мы все знаем, если мы читаем файлы изображений (или видео) как двоичный объект, а затем создаем URL-адрес для этих объектов, мы можем затем отображать файлы с этими URL-адресами blob внутри HTML, что не может быть доступ к нему осуществляется в другом окне или вкладке, поскольку он существует только в текущем сеансе. В результате пользователь не может просто сохранить файл (например, мы не можем просто загрузить видео с YouTube, поскольку их теги видео имеют URL-адреса blob в качестве источников).

Итак, мы можем сказать, что это способ предотвратить пользователи от кражи конфиденциальных файлов с помощью консоли разработчика? Если да, то почему так много веб-сайтов этого не делают? Я знаю много веб-сайтов, на которых есть изображения, защищенные авторскими правами, или продаются обои, но вы можете просто загрузить их файлы с консоли. Или что-то не так с этим методом?

1 Ответ

0 голосов
/ 01 июня 2020

Вовсе нет. Файл уже находится на их компьютере, и они вполне могут сохранить его, будь то изображение или даже видео, добавление в элемент HTML URL-адреса blob: // не предотвращает никаких действий «Сохранить как»:

fetch( "https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png" )
  .then( resp => resp.blob() )
  .then( blob => {
    console.log( 'img loaded' );
    const elem = document.querySelector( 'img' );
    elem.src = URL.createObjectURL( blob );
  } );

fetch( "https://upload.wikimedia.org/wikipedia/commons/a/a4/BBH_gravitational_lensing_of_gw150914.webm" )
  .then( resp => resp.blob() )
  .then( blob => {
    console.log( 'video loaded' );
    const elem = document.querySelector( 'video' );
    elem.src = URL.createObjectURL( blob );
  } );
Try to right click "save As..." these two media:
<img>
<video controls></video>

Отмена однажды загруженного URL-адреса blob: // может немного усложнить задачу, но даже в этом случае, если вы посмотрите на сетевую панель своих инструментов разработчика, вы увидите исходный запрос, на основе которого был сгенерирован Blob-объект и откуда ваши пользователи смогут очистить ваши данные.

YouTube не использует URL-адрес blob: // для предотвращения загрузок

Если бы они действительно хотели усложнить загрузку своих видео, они бы защищали их с помощью DRM и использовали бы EME API , но это не так. URL-адрес blob: //, который вы видите в видео YouTube, указывает не на Blob, а на объект MediaSource . Они действительно используют этот API, чтобы иметь возможность обслуживать адаптивное содержимое, т. Е. Иметь возможность отправлять более низкое качество одного и того же носителя на лету, когда качество соединения ухудшается. Это не имеет абсолютно никакого отношения к какой-либо защите, и быстрый поиск в Интернете покажет вам, что найти исходный файл довольно просто. s YT транслируется.

...