GP Features

Subresource Integrity

Ситуациях где особенно важно гарантировать неизменность кода на сайте, на котором установлен контейнер, можно использовать опцию - Subresource Integrity.

Эта опция заставляет браузер перед выполнением скрипта удостовериться в том, что скрипт не был изменен. Для выполнения проверки, браузер вычисляет контрольную сумму скрипта и сравнивает с эталонной контрольной суммой, записанной в свойстве integrity указанном при установке скрипта.

Таким образом, даже если скрипт будет изменен, это ни как не затронет пользователь сайта, так как браузер просто не выполнит код измененного скрипта.


Пример установки скрипта с добавленным атрибутом integrity

<script>
	 window.generalPixel = window.generalPixel || [];
	 window.generalPixel.push({type:'GPID', id:'1000235A'});
</script>

<script 
src="https://static.terratraf.io/GP/1000235A.js" 
integrity="sha256-5fv26KymfjkGL8N18EksUP7darBXSS/kFZK7Hnt9EPk=" 
crossorigin="anonymous"></script>

Установка контейнера таким образом несет ряд преимуществ по сравнению с переносом кода на сайт клиента. Основное из них - простота в обновлении скрипта, при изменении скипа надо будет только заменить значение атрибута integrity без необходимости выкачивания скрипта, очистки CDN.


Больше информации про это свойство вы можете найти на странице https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity.


F.A.Q.

Q: Можем ли мы целиком перейти на сервер - сервер интеграцию, что бы ни какие скрипты не загружались на нашем сайте?

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