Вбудовувати чат як first-party скрипт на сторінці зручно — і ризиковано. Будь-який код на сторінці може читати DOM, чіпати мережеві виклики чи знімати текст повідомлень.
Ризики віджета в DOM основної сторінки
Lavenity тримає інтерфейс розмови на нашому origin всередині iframe. Скрипти вашого сайту не отримують доступу до вмісту повідомлень, а скомпрометований шаблон чи сторонній тег не можуть тихо витягнути тред.
Батьківська сторінка вантажить лише маленький bootstrap-скрипт, який відкриває фрейм і передає site ID. Міжorigin-межі роблять ту ізоляцію, якої не дають віджети в тому самому документі.
Як iframe створює межу між origin
Додатково ми підписуємо токени відвідувачів, щоб історію не можна було підробити, обмежуємо віджет allowlist доменів, застосовуємо строгий Content Security Policy і ріжемо зловживання rate-limit до того, як воно потрапить у вхідні.
Якщо проводите security review, почніть з межі iframe, підпису токенів і allowlist доменів — це контроли, які найбільше важать для чат-ембеду.
CSP, токени й allowlist як додаткові шари
Питання про персональні дані — у Політиці конфіденційності. Операційний чеклист — на сторінці Безпека.
Що перевірити під час security review
Переконайтеся, що батьківська сторінка не може читати DOM чату, а iframe дозволено вбудовувати лише на схвалених доменах. Перевірте передачу site ID, валідацію postMessage origin, строки життя й підпис visitor token, а також поведінку після видалення домену з allowlist.
Окремо перегляньте Content Security Policy, маршрути вкладень і rate limits. Ізоляція iframe зменшує поверхню доступу сторонніх скриптів, але не замінює автентифікацію, контроль походження, журналювання та обмеження зловживань. Безпека працює як кілька незалежних шарів, а не одна магічна межа.
Поширене запитання
Чи робить iframe чат повністю захищеним сам по собі?
Ні. Iframe створює важливу cross-origin межу, але Lavenity також використовує підписані visitor tokens, allowlist доменів, строгий CSP, перевірку origin і rate limiting. Надійність зʼявляється з поєднання цих контролів.