Возможные причины разных результатов SRI в разных браузерах?
Клиент хотел бы использовать SRI для всех ресурсов CSS и JS на своем веб-сайте, но у него возникла очень странная проблема с Firefox. Их сервер является экземпляром apache2, обслуживающим контент HTML. CORS включен для всего виртуального хоста, для любого (*
Происхождение Там нет кеша или CDN на месте.
Два файла в вопросе
company.min.css
а такжеcompany.min.js
Для генерации хэшей SRI изначально использовался SRI Hash Generator. Вывод этого имеет несколько алгоритмов и выглядит так:
<script src="https://example.com/static/company.min.js" integrity="sha256-aKuSpMxn15zqbFa0u0FVA7mAFOSVwIwU4gA3U7AZf5Y= sha384-WDAg+qGBjbEyE52SdQ5UHdTObTY+jYTL63m9Oy2IJcGZR8AFn0t9JNN7qdut6DBk sha512-bxmUFj1FVOVV74+zIYau/HSUcLq9cuneBKoMJyW9dAz//yKFi8eRhyyIezF++2vbGO7cR6Pzm1l9rvnPcrvIrg==" crossorigin="anonymous"></script>
похоже на файл CSS. Они были вставлены в HTML, и сайт был протестирован в нескольких различных браузерах, с таким результатом:
- работает в Chrome (/Canary), Opera, Edge и даже IE
- не работает в Firefox (/ Nightly).
Firefox только не любит CSS, говоря, что SHA512 не соответствует ресурсу. Он обрабатывает файл JS нормально по любой причине.
Я подтвердил (используя OpenSSL), что хэш, сгенерированный вышеприведенными инструментами, действительно правильный, и тот факт, что он работает почти во всех браузерах, кроме Firefox, заставил меня задуматься.
Поэтому я попытался хэшировать ресурсы, используя собственный инструмент SRI от Mozilla, https://www.srihash.org/, который является рекомендацией Mozilla из их поста в блоге о SRI.
Теперь это немного странно.
- Для файла CSS srihash.org генерирует совершенно другой хэш.
- Для файла JS хеш одинаков для обоих генераторов и соответствует моему автономному хешированию с OpenSSL.
Но если я заменю ссылку CSS на сгенерированную Mozilla, это будет результат:
- работает в Firefox
- больше не работает, так как хеш не соответствует
Вопрос
Яподозреваю, что это некоторая проблема в реализации SRI Firefox. Соответствующее обсуждение для реализации здесь, но это не дает никаких причин, почему ресурс отличается в Firefox. Но я не являюсь веб-разработчиком, поэтому есть ли вероятные (задокументированные) причины для различных хеш-значений SRI в разных браузерах?
Я не могу раскрыть точный сервер / ресурсы.Это общий вопрос, поэтому, если у вас есть какой-либо объективный опыт или ссылки на авторизованные источники, документирующие различия в реализации SRI, пожалуйста, ответьте.