Обработка ошибки загрузки в рамках проверки целостности подресурса

Я реализую проверки целостности подресурсов. Я хотел бы реализовать такой запасной вариант, чтобы 1) браузеры загружались из моего CDN, выполняли проверку целостности и продолжали или 2) в случае сбоя проверки целостности встроенный сценарий запускает и извлекает необходимый сценарий из моего приложения сервер (ресурс под моим контролем).

У меня есть простой javascript, который перехватывает события window.onerror, но скрипт фактически обнаруживает неперехваченное ReferenceError (моя страница ссылается на скрипт во внешнем ресурсе), а не ошибку браузера "Не удалось найти правильный дайджест...".

Кто-нибудь нашел способ обнаружить, что проверка целостности не удалась, а затем использовать javascript для извлечения стороннего размещенного ресурса из более надежного расположения?

2 ответа

Решение

Взгляните на эту реализацию SRI-отступления:

https://github.com/cyph/sri-fallback

Вы можете проверить наличие загруженного ресурса и загрузить резервную локальную копию:

<script src="https://code.jquery.com/jquery-1.12.0.min.js" integrity="sha256-Xxq2X+KtazgaGuA2cWR1v3jJsuMJUozyIXDB3e793L8=" crossorigin="anonymous"></script>
<script>
if (!window.jQuery) {
                var script = document.createElement('script');
                script.src = '/local-resources/js/jquery-1.12.0.min.js';
                script.async = false;
                document.head.appendChild(script);
            }
</script>

Вы должны поймать ошибку и сделать все необходимое.

  • Создать и прикрепить MutationObserver
  • добавить обратный звонок
  • поймай ошибку и действуй соответственно

Посмотрите на оба примера ниже. Займи все, что полезно. Отправить большое спасибо авторам;-)

Здесь вы можете найти пример https://github.com/cyph/sri-fallback/blob/master/sri-fallback.js

Еще одно очень хорошее чтение доступно здесь https://aldaris.github.io/dev/security/2018/03/05/subresource-integrity.html

PS: window.onerror, вероятно, не лучший подход для вас, может привести к большему количеству ошибок, чем ожидалось, и привести ко многим условиям...

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