Чи безпечно ставити сторонній скрипт на сайт магазину: як влаштована безпека віджетів widgetis

Питання «а це безпечно?» ставлять рідко, і дарма. Вставляючи будь-який сторонній скрипт у шаблон магазину, ви впускаєте чужий код на сторінки, де люди вводять телефон і платять гроші. Технічно такий код виконується з тими самими правами, що й ваш власний: він бачить сторінку, може читати форми й може звертатися кудись назовні.

Тому чесна відповідь на питання про безпеку полягає не в «у нас усе надійно», а в конкретному переліку: що скрипт робить, які дані залишають браузер покупця і що станеться, коли ви його вимкнете. Нижче саме такий розбір на прикладі наших віджетів. Ті самі питання варто поставити будь-якому іншому сервісу, який просить вставити рядок коду.

Що взагалі може сторонній скрипт

Щоб оцінювати ризик, треба розуміти межі. Скрипт на сторінці магазину принципово здатний на таке:

  • Читати вміст сторінки, включно з тим, що покупець уже ввів у форму.
  • Змінювати сторінку: додавати, ховати або підміняти елементи, зокрема кнопки й посилання.
  • Відправляти будь-що на власний сервер.
  • Записувати дані у сховище браузера й читати їх при наступних візитах.

Це не особливість якогось конкретного сервісу, а те, як влаштований веб. Саме тому має значення не обіцянка, а те, що конкретний скрипт із цього насправді робить і чи можете ви це перевірити.

Скрипт прив’язаний до вашого домену

Для кожного магазину збирається окремий файл за власною адресою, і всередині нього зашита перевірка домену. Якщо код запустити на будь-якому іншому сайті, він зупиняється одразу й нічого не робить. Перевірка зберігається в закодованому вигляді, тому назву домену не видно простим пошуком по файлу й не вийде просто підмінити її текстовим редактором.

Практичний наслідок для вас подвійний. По-перше, ваш рядок скрипта не має цінності для чужих: скопіювавши його, конкурент отримає файл, який на його сайті просто не запуститься. По-друге, це причина, чому після переїзду на інший домен віджети мовчки зникають, поки ми не переключимо сайт: захист спрацьовує так само проти вас самих.

Більшість віджетів взагалі нікуди не звертається

Це головне, що варто знати про наші віджети: майже всі вони працюють повністю в браузері покупця й не роблять жодного мережевого запиту. Прогрес до безкоштовної доставки, мінімальна сума, липка кнопка, значки довіри, дата доставки, залишок на складі, маска телефону, біжучий рядок: усе це рахується локально на сторінці. Нікуди нічого не йде.

Виняток становлять три віджети, яким без сервера не обійтися, і чесно назвати, що саме вони відправляють, простіше, ніж робити вигляд, що таких немає:

  • AI-рекомендації у кошику передають склад кошика, щоб отримати у відповідь список супутніх товарів вашого ж каталогу.
  • Акція 1+1=3 передає склад кошика, щоб сервер порахував, які позиції потрапляють в акцію та який подарунок належить.
  • Фото-відео відгуки передають те, що покупець сам залишає: текст відгуку, оцінку та завантажені ним файли.

У жодному з цих випадків не передаються ані платіжні дані, ані контакти покупця. Передається рівно те, що потрібно для відповіді, і рівно тоді, коли віджет увімкнено.

Що віджети роблять із кошиком і формами

Щоб показувати актуальну суму, віджет має знати, що кошик змінився. Для цього він локально відстежує запити, які сам магазин робить до свого кошика, і реагує на них. Тут головне слово «локально»: віджет бачить факт зміни та нову суму на сторінці, і ці дані нікуди не відправляються, вони потрібні тільки щоб перемалювати число на екрані.

Окремо про маску телефону, бо це єдиний віджет, який працює з полем форми. Він форматує номер, який покупець вводить: розставляє пробіли, підставляє код країни, не дає ввести літери. Номер при цьому залишається у вашій формі й іде туди, куди й раніше, тобто в замовлення Хорошоп. Віджет його не копіює й нікуди не пересилає.

Платіжні дані віджети не бачать взагалі

Оплата в магазині на Хорошоп відбувається на стороні платіжного провайдера, і жоден віджет туди не втручається. Номери карток, термін дії та CVV не проходять через наш код, не зберігаються в нас і не можуть бути нами прочитані. Це не питання довіри до нас, а питання архітектури: віджети додаються поверх сторінок магазину й не мають доступу до платіжної форми провайдера.

Правильне питання до будь-якого стороннього скрипта звучить не «чи ви надійні», а «що саме виходить із браузера мого покупця і чи можу я це вимкнути за секунду».

Сховище браузера: що там лежить

Частина віджетів запам’ятовує свій стан у сховищі браузера покупця: який попап йому вже показували, чи він уже отримав приз у колесі фортуни, чи закрив банер. Це потрібно, щоб не показувати те саме вікно вдесяте. Записи належать вашому домену, живуть тільки в браузері конкретної людини, не передаються нам і не бачать даних інших сайтів.

Персональні дані покупця там не зберігаються, рекламних трекерів і профілювання для сторонніх мереж наші віджети не ставлять.

Сторонні ресурси, які варто назвати

Два місця, де віджети звертаються не до нас, і про які краще знати заздалегідь, ніж дізнатися з інструментів розробника:

  • Прапорці країн у масці телефону підвантажуються як картинки зі стороннього сервісу прапорців. Це звичайне завантаження зображення, ніяких даних покупця в ньому немає.
  • Визначення країни за IP у тій самій масці телефону типово вимкнене. Якщо ви його свідомо ввімкнете, віджет запитає країну в зовнішнього геосервісу, щоб одразу підставити правильний код номера. Не вмикайте, якщо не хочете цього запиту: усе інше в масці працює й без нього.

Що станеться, коли ви вимкнете віджет

Віджети нічого не переписують у шаблоні магазину. Вони домальовують свої елементи поверх готової сторінки, тому вимикання будь-якого з них у кабінеті повертає сторінку до стандартного вигляду за кілька хвилин. Видаляти рядок скрипта, відкочувати шаблон чи звертатися до розробника не треба.

Це, до речі, найпростіша перевірка для будь-якого сервісу віджетів перед запуском: увімкніть, подивіться, вимкніть і переконайтеся, що сайт повернувся у вихідний стан. Якщо після вимкнення щось лишилося зламаним, це поганий знак, і краще дізнатися про нього на тесті, а не на чорну п’ятницю.

У робочому файлі віджетів також вирізано всі службові повідомлення для розробників, тож консоль вашого магазину лишається чистою й у ній не з’являється сторонній шум, який заважає діагностувати власні проблеми сайту. Якщо ж віджет не з’явився, причини й порядок перевірки зібрано в окремому чеклисті.

Персональні дані та законодавство

Ваш магазин лишається власником даних своїх покупців: замовлення, контакти та історія живуть у Хорошоп, а не в нас. Ми обробляємо дані вашого облікового запису як клієнта сервісу: контакти для зв’язку, адресу магазину, налаштування віджетів. Повний перелік того, які дані збираються, навіщо, як довго зберігаються і як їх видалити, є на сторінках безпеки даних і політики конфіденційності, і вони написані під український закон про захист персональних даних із урахуванням принципів GDPR.

Чеклист для будь-якого стороннього скрипта

Ці ж питання варто ставити не тільки нам. Якщо сервіс не може відповісти на них конкретно, це вже відповідь:

  1. Які саме дані виходять із браузера покупця й у якому обсязі?
  2. Чи торкається скрипт форми оформлення та платіжного кроку?
  3. Чи прив’язаний код до мого домену, чи будь-хто може запустити його в себе?
  4. Що станеться із сайтом, якщо сервіс вимкнути або якщо він недоступний?
  5. Чи є письмова політика щодо персональних даних і строків їх зберігання?
  6. Чи можу я побачити зміни на своєму магазині до того, як їх побачать покупці?
Подивитися, як віджети працюють на демо-магазині

Часті питання

Чи безпечно ставити сторонній скрипт на сайт інтернет-магазину?

Будь-який скрипт на сторінці технічно бачить її вміст і може звертатися назовні, тому питання не в самому факті, а в тому, що конкретний код робить. Перевіряйте три речі: які дані залишають браузер покупця, чи торкається скрипт платіжного кроку і чи можна вимкнути сервіс так, щоб сайт повернувся до вихідного вигляду.

Чи бачать віджети дані банківських карток покупців?

Ні. Оплата відбувається на стороні платіжного провайдера, куди віджети не мають доступу. Номери карток, термін дії та CVV не проходять через наш код і не зберігаються в нас.

Які дані віджети відправляють на сервер?

Більшість віджетів не роблять жодного мережевого запиту й рахують усе в браузері. Три виняткові випадки: AI-рекомендації та акція 1+1=3 передають склад кошика, щоб отримати підбірку товарів або розрахунок акції, а фото-відео відгуки передають те, що покупець сам залишає. Контакти й платіжні дані не передаються ніколи.

Чи може конкурент скопіювати мій скрипт і поставити собі?

Ні. Для кожного магазину збирається окремий файл із зашитою перевіркою домену: на чужому сайті код зупиняється й нічого не виконує. Через цей самий захист віджети перестають працювати після зміни вашого домену, поки ми не переключимо сайт на новий.

Що буде із сайтом, якщо вимкнути віджет?

Сторінка повернеться до стандартного вигляду протягом кількох хвилин. Віджети малюються поверх готової сторінки й не змінюють шаблон магазину, його кошик чи оформлення замовлення, тому нічого видаляти вручну не потрібно.

Читайте також

ШвидкістьЧи сповільнюють віджети сайт: як ми зменшили свій бандл у три разиЧитати ІнструкціїВіджет не з’явився на сайті Хорошоп: 7 причин і перевірка кожної за хвилинуЧитати ІнструкціїЯк встановити віджет на Хорошоп: скрипт, адмінка й перевірка за 3 хвилиниЧитати