Как защитить от подмены скрипт на сайте
Привет! Мы занимаемся внедрением платформы автоматизации маркетинга и CRM-маркетингом. Короче делаем так, чтобы клиенты хотели с вами общаться и покупать, снова и снова....
Один из наших заказчиков задал нам вопрос: "Как я могу быть уверен, что содержимое вашего JS-скрипта отслеживания, устанавливаемого к нам на сайт в какой-то момент не поменяется? Можете гарантировать нам, что он не начнёт отслеживать или передавать больше чем должен куда-то на сторону?"
Вопрос интересный, мы даже не сразу поняли, что он имеет ввиду и шаблонно ответили, что скрипт отслеживания MauticJS (mtc.js) у нас стандартный - его содержимое открыто и легко поддаётся анализу. Полная раскладка по нему в документации. Но это как-то не воодушевило клиента и он ещё раз уточнил, что его волнует именно гарантия неизменности файла отслеживания в будущем.
Ради спокойствия клиента мы всё же задумались - ведь и правда, гипотетически, в файл mtc.js (впрочем как и в скрипт Yandex.Metrika https://mc.yandex.ru/metrika/tag.js или любой другой сторонний скрипт у вас на сайте) уже после установки можно что-то дописать так, чтобы никто и не заменит. Значит нужно сделать так, чтобы выполнялся только исходный оригинальный скрипт.
Есть задача - есть решение. Простое и элегантное ;)
- Генерируем хеш скрипта, например через https://beautifycode.net/sri-hash-generator
- Редактируем код вставки на сайт так, чтобы скрипт выполнялся только при условии совпадения хеша с оригинальным скриптом.
Где xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx заменяем на вычисленный хеш.
В итоге в случае изменения содержимого уделённого файла - поменяется его хеш, хеши не совпадут и JS-скрипт даже не запустится!
Огромное спасибо клиенту за правильный вопрос - мы теперь во всех скриптах внедрили проверку и другим советуем ;)
Ещё про безопасную коммуникацию с клиентами в нашем TG-канале