Атрибут integrity (SRI)
Введение:
Для клиентов UX Feedback, которые используют код платформы с атрибутом integrity, рекомендуем обновлять версии вместе с выходом новых релизов.
Для обновления кода необходимо:
Обновить URL window, document на актуальную версию кода, которая указана в таблице и заголовке.
Обновить атрибут - s.integrity
С атрибутом integrity код примет вид (без параметров):
<script>
(function(w, d, u, h, s) {
w._uxsSettings = {id: 'XXXXXXXXXXXXXXXXXXXX'};
h = d.getElementsByTagName('head')[0];
s = d.createElement('script');
s.integrity = 'sha384-__________';
s.crossOrigin = 'anonymous';
s.async = 1;
s.src = u;
h.appendChild(s);
})(window, document, 'https://cdn.uxfeedback.ru/N.N.N/widget.js');
</script>
Где:
XXXXXXXXXXXXXXXXXXXX- Необходимо подставить ID вашего аккаунта UX Feedback, который можно найти в личном кабинете, в разделе “Код установки” (код установки в личном кабинете не учитывает использование атрибута integrity)
s.integrity- Необходимо подставить хэш безопасности, который можно получить на сайте https://www.srihash.org/ . Инструкция - https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity#tools_for_generating_sri_hashes
https://cdn.uxfeedback.ru/N.N.N/widget.js - Вместо N.N.N необходимо подставить актуальную версию кода.
Актуальная версия кода - 6.6.0
История изменений:
Дата | Версия | Изменения | Integrity |
03.2026 |
| sha384-MD49xiWONVnNVTcNj3aGSNmlNVPxk8jRVKWAXgMw5L26JuoUHgmSdCHqWfmsnl3i | |
02.2026 |
| sha384-jQQ2jAR9naoY/U/4ViZp2DYqWpQHx2/XATm8X1CdJFeBqm/yW2PBTo9SSnOz9Ao9 | |
12.2025 |
| sha384-SFpQXqALNk9aOeVKOTuG+6FYuP8UDoeG6JcN3zwa88rQZgsCqi/aGyNUDoALjEV0 | |
12.2025 |
| sha384-qDtxA50LrQc5WNhFc/xlNPTDPKL1BQKn0SXcJfBfsfehVnvirASG0eF542R3MolY | |
12.2025 |
| sha384-qDtxA50LrQc5WNhFc/xlNPTDPKL1BQKn0SXcJfBfsfehVnvirASG0eF542R3MolY | |
11.2025 |
| sha384-mlUtrwkNK3U2eDyHtfTsTfnazjS+cF2wLD+DgefJf0IVtmigbizszXUj4U9DLzTu | |
10.2025 |
| sha384-dTp2SruZrWwnK5ax65CApS7wwen873G+G5/gaOpTPHbjHbHktCMQLNY4nGcSTeiN | |
10.2025 |
| sha384-ttYpWZsqUygCR4g/3x2ZFs+eooRhQXhlDv3VZihMGP5mHBq8zhGSUjQlRgBWNlNv | |
09.2025 |
| sha384-TopWhpKT3T+5L0WPd8OkE7NLVXwEiUl0S02DfjZm0y+Tq6/qkcu8NiaWeA6y9ZnU | |
08.2025 |
| sha384-krpxHAgtH/ntE43EeRS4Vy7WdatvLvk+To4MEOemtmGsulEwbrd3RGRJdI2ZZQ4K | |
08.2025 |
| sha384-1QWL4lgaNORDV3CThxY9mDMUfilDSeNqXKu0Ab0qPG0JiMYTpy4JVGcBJWN4KA81 | |
06.2025 |
| sha384-4rxIb23gC/poTB/rTzlKfoNEe88NVsVOzfoBnFfFXAeoaUFuWj0VnunG4chU3SMy | |
05.2025 |
| sha384-5w49mI3z8s0kpF7v9ebCs0uUB8Nf87uZ0bVTtD6edNYbx3KjWkIozDa6dTy70ftk | |
04.2025 |
| sha384-HRShwOw1+RAttJzyXHiPXyQrZ0ttEwZrdmVghZjlEABRFo4T+X3eh/tcViZS1cym | |
04.2025 |
| sha384-uwjsB+aZkzsCOqERAWuIFE4C9ft8G4MyquFGb18ZQHWsjkxMYSb664BRnXocabvs | |
03.2025 |
| sha384-8nTxHq2B1E+UUnzzFQP9+PvtuKeRdSJVaWI4qe5wCCenFUGab+tE7UeB4agcipyP | |
03.2025 |
| sha384-uD41L2Q5MY1JGdWWNMKzC3OxxryfZ76+7luMbLjGfg+GT5KoMDWQMJJZMbNIg1+N | |
02.2025 |
| sha384-5qA5UjADhcShEnRJEGsAsIG/tuCee6JfGGgN6XpZmOUFElkO8TmpYfS8MgZbvUMe | |
01.2025 |
| sha384-isCXjw7NrTaB1CgE3W2z9vOSp0/sarXtRmWNggL6pCnHpWtyBgNOXJuHmo9Wbm5r | |
12.2024 |
| sha384-ngnRh1vLRgkdZJumsteWrRtnoacoVbfgM+6BxRUDZdgVvz+I1Ycb/345Dm7Y8g9V | |
10.2024 |
| sha384-/h5Z2h/PGjO9Z5nCUYl821xQe3tkYa1UK7TKdSZmm/nQt8GfraQvu5eq0sZRCZ0m | |
08.2024 |
| sha384-YOJCU7vW7s5KcdnIzoHIav54yeN3TQ5BBUKdfWR4onKJGuzm/7+NjfQwy8VDGO3v | |
08.2024 |
| sha384-gHySOwGPzAKw6vopBkK1a5lZP1Ck7ZkjnNkvZtaM6h8WxcHmUumfOKn4/AEBWfPw | |
06.2024 |
| sha384-Ej1P+o72rA0jTkmh3DwGvIuflxF+tQDbAUA5KC8mHxjCB5IsnmnAY/GnvddCbrYX | |
06.2024 |
| sha384-N/269Ay8/wEfYMVM8V/O17SP2yXsTyyoTViVZINz+hrg3uH8pe3hke0f5QvuZw0P | |
04.2024 |
| sha384-iVFkbwpd5fvolKrn+V8ZjmSjxf99TwABPmnob2J1icTv2qd3V | |
02.2024 |
| sha384-TImMaqIR+xhirT3OSUBhWkUsS9Fc3X0JJfzmKFmwE+0dgqHhpquY+vvtGKZlz3w6 | |
01.2024 |
| sha384-cKh97dSxyiG7o+ceJfCQLKKgWZXCKEXoY//daCEHPGPMmItR5N+9hvVglmF6+TvL | |
01.2024 |
| sha384-/qrXpEB6bM8NmpvX/EbOCykl6xtqiwb+wbv6eIuAtVo/iitavJVoY+iIIOZU4glh | |
11.2023 |
| sha384-1WKkfMHv83ASO3XPhrHtfZG5zNjeAbKURS6f5Uv5Afo8reF0a0CrdL9STK2bWgjD | |
11.2023 |
| sha384-1B6wWA3TvSLc5BcJNgFtmBJFSwvZpT1WbdFqHw2uZ3+XgaNKNNxN+EuLidOT/DST | |
10.2023 |
| sha384-bzhBzbjjAyRY9lJWmrnp5LrGiJRYhqErpzjYQ64K8W8+fBpjWnawznP9Ddi7o58E | |
10.2023 |
| sha384-SCFngZoZQqg2lqH4xJvkoIY9pulIW2wWKbTvZzA4l3kP+vi/mljjD3U3m2/MLZvD | |
10.2023 |
| sha384-gLpSg+yD7Qi20HlOI3qdvq3+nT9qJSIGt1OnPqAjZJGkFF8ZBlQQ6C4kfJFyICer | |
09.2023 |
| sha384-VM0endgGr1RfqFf5/LyqOlnD6hI6J0MLZyroimv3O3EBqTh+GmalAbcRRB6ITT+s | |
08.2023 |
| sha384-2Bt35Nx1w0tIlIO4Q7VfoPVbAzXUdsH+LB0vMgFdU/d/fIBTk5cJUnPwjjr896QO | |
07.2023 |
| sha384-Ddow7dxyMoyw/CSLH3eOeOR69ZB5/PmFYKdKJQPQYEDth5NZLX8EKQBWD9MwIRpq | |
04.2023 |
| sha384-4CC0shEaXNm1on40Kve/mOLEV7hgvwG4Z+EDMKkEg65dJRVH0NN1Al6C06IjwoJw | |
04.2023 |
| sha384-WPKrZnrqNOvHQB5+KilxGCr1MoGrJquay1BW7P380NUqZJ4C0Rti8GIJZ/hpC1bH | |
03.2023 |
| sha384-MMWKERLoNh2QIp4dvarDZPV6v2TSl90A6uGsCb9J9eb75kWAs9h7T6Zh6DtYahcR | |
03.2023 |
| sha384-rJb4xEIe5AW0cOns89EjwApBiYuOEOKwSbFRosuJdNe2bJUnsPWJiYPzzEhvx1Gf | |
02.2023 |
| sha384-GODxCHrjIHgTmpY7Z0Bqt43D6NsJ7MMg+dxN3GDjZUFo3s7jk20VkTAuFJOv2Yuh | |
01.2023 |
| sha384-2YYy1vGh25qWo0+zPU3m/NvAnMGmGdKbtBE6YNiYXzUM+jVmq9W36Wbx9epO0fyJ |
Дополнительная информация о покрытии внутренних файлов атрибутами integrity.
Как вы можете знать, код виджета не ограничивается только файлов widget.js, он содержит несколько дополнительных скриптов, которые подгружаются файлов widget.js. Из-за этого у некоторых клиентов может возникнуть вопрос, если атрибут интегрити добавляется только к файлу widget.js (глава “Для обновления кода необходимо:” чуть выше как раз про это и рассказывает) как быть уверенным, что другие скрипты также защищаются.
Для этого придется перейти по ссылке с актуальной версией widget.js (там откроется страница с кодом этого файла)
В этом файле нас интересуют участки кода представленные ниже:
a.integrity=i.sriHashes[s]i.sriHashes={
14:"sha384-g+M/CbjDHk7oVla/k36DPTdO30bgYLdl6lv+vKeXh/+iM5gE9B+LiPQ43rhdmkwQ",
290:"sha384-hUFHQUuw8nUbHmv/2q2eMgcmTi6IMTgFa9pqqBo5Uki2432xSVYntitG4z8cOP3M"
418:"sha384-l199ebs+rOn4n1oJWPAVSEO2sZ4VdgEXg+NmY3ff60uqg1WJK+ZmC0gyRDFf53Uy",
761:"sha384-2B54d2VwH214nrVBok2ZVNAPcZ7hpn0t85Q1SnseJhDK1Wr1kkNjGeZal9VJ3KUS"
} // хэши и их отображение может отличаться в реальном коде14, 290, 418, 761 - это названия файлов, которые widget.js дополнительно загружает
А часть после двоеточия - как раз хэш безопасности.
Получается, если изменится какой-то из внутренних файлов изменится его хэш и загрузка не пройдет, а если поменять хэш в файле widget.js, то не пройдет уже загрузка самого файла widget.js, тк у него изменится хэш безопасности, а верный контролируется на стороне клиента.