Чим ми можемо допомогти?

Стисло опишіть питання; ми відповімо електронною поштою.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
На головну

Безпека й Content Security Policy

Які записи CSP потрібні віджету, чому він працює без вбудованого скрипту й unsafe-inline, як ізольований від сторінки та які секрети ніколи не мають бути в браузері.

Content Security Policy

Віджет не завантажує сторонніх шрифтів чи пікселів відстеження й не виконує eval. Стилі задаються через constructable stylesheets (adoptedStyleSheets) у shadow DOM; на них style-src не поширюється. Тому не потрібні ані unsafe-inline, ані unsafe-eval.

З адресами reactive.chat:

Content-Security-Policy:
  script-src 'self' https://cdn.reactive.chat;
  connect-src 'self' wss://ws.reactive.chat https://ws.reactive.chat;
  img-src 'self' data: https:;

Із власним доменом:

Content-Security-Policy:
  script-src 'self' https://chat.your-company.com;
  connect-src 'self' wss://chat.your-company.com https://chat.your-company.com;
  img-src 'self' data: https:;

Окремі записи:

Старіші браузери без constructable stylesheets (як Safari до 16.4) використовують елемент <style>, який сувора style-src блокує. Віджет там працює, але без стилів.

Вбудований скрипт не потрібний

Встановлення складається лише з <script src> з атрибутами. Власні виклики (identify, track, open) мають бути у власних файлах або вбудованому скрипті з nonce:

<script nonce="R4nd0mN0nc3">
  ReactiveChat('identify', { userId: '4711', userHash: '…', exp: 1792503600 });
</script>

Шаблон без вбудованого скрипту — Ідентифікація відвідувачів.

Subresource Integrity

loader.js не має номера версії в назві й постійно оновлюється; атрибут integrity зупинив би чат після наступного оновлення. Ядро завантажується з хешем вмісту в назві (Архітектура). Якщо політика потребує SRI, надавайте loader.js самі й задайте data-rc-ws-url (Швидкий старт), але й оновлювати тоді вам.

Ізоляція від сторінки

Перевірка джерела

З’єднання чату приймається лише з доменів проєкту в Дозволених джерелах (піддомени включено). Стороння сторінка, що копіює ключ сайту, отримує origin_denied. Порожній список означає відсутність перевірки — завжди додавайте домени. Подробиці — Транспорт.

Сам ключ сайту не секрет; він є у вихідному коді кожної сторінки.

Чому ніколи не місце в браузері

Також не в застосунку, публічному репозиторії чи адресі сторінки.

Захист від зловживань

Сервер обмежує з’єднання, кадри й повідомлення на з’єднання та адресу й блокує повторні порушення (закриття 1008). За власним проксі він рахує за адресою відвідувача лише з правильним ключем проксі, інакше всі ділять адресу проксі. Значення — Ліміти й квоти.

Далі: Власний домен

Оновлено: