Целостность субресурса для изображений и других медиа?

Целостность субресурса, по-видимому, является отличным временным промежутком, позволяющим безопасно использовать сторонние контролируемые HTTP-обслуживаемые ресурсы.

Однако спецификация считает HTMLLinkElement а также HTMLScriptElement только интерфейсы:

НОТА

В будущем пересмотр этой спецификации, вероятно, будет включать поддержку целостности для всех возможных подресурсов, т. Е. a, audio, embed, iframe, img, link, object, script, source, track, а также video элементы.

Я понимаю, что содержание, на которое ссылается script а также link elements более "активны", но браузеры убирают зеленый замок для извлечения даже относительно безобидных изображений через обычный HTTP, в то время как спецификация предпочитает их игнорировать? Это, кажется, огромное отсутствие предвидения для меня.

Какова была причина этого, и когда мы можем ожидать "будущую ревизию", если вообще?

2 ответа

SRI дает вам некоторые гарантии того, что запрашиваемый вами ресурс не был изменен. Например, если вы загружаете JQuery из CDN, то вы хотите быть уверены, что никто не изменил его, чтобы включить в него вредоносный код (один из основных недостатков загрузки кода с другого сайта - вы неявно доверяете безопасности этого сайта). SRI дает вам эту гарантию.

SRI нечего сказать о том, как он загружен. Вы также можете легко загрузить JQuery через http и получить уведомление об этом из-за небезопасного содержимого, несмотря на то, что это проверено SRI.

Небезопасный контент вреден по многим причинам, в том числе:

  1. Нет гарантий, что контент не был изменен в сети (что SRI адресует несколько).
  2. Утечка файлов cookie (если не защищена атрибутом Secure).
  3. Утечка конфиденциальности (злоумышленник знает, что вы запросили этот ресурс).

SRI решает только эту первую проблему. И даже тогда он останавливает загрузку только в том случае, если он был изменен, и не уменьшает вероятность его изменения (как это делает https).

Если вы хотите решить проблемы с небезопасным содержимым, вы можете вместо этого взглянуть на Политику безопасности содержимого, либо явно заблокировать ее, либо с помощью директивы upgrade-insecure-запросы для автоматического обновления (для браузеров, которые поддерживают это).

Я провел небольшое исследование по этому вопросу и собрал все, что мог, в вопросе в репозитории спецификации на github.

У меня сложилось впечатление, что люди, стоящие за спецификацией, были заняты, и что не было большого спроса на расширение спецификации, но, возможно, мы увидим больше разговоров в выпуске, который я только что открыл.

Другие вопросы по тегам