Zabezpečení a Content Security Policy
Jaké položky potřebuje vaše Content Security Policy pro widget, proč funguje bez inline skriptu a bez unsafe-inline, jak je izolován od stránky a které tajné klíče nikdy nepatří do prohlížeče.
Content Security Policy
Widget nenačítá písma třetích stran ani sledovací pixel a nespouští eval. Styly nastavuje prostřednictvím constructable stylesheets (adoptedStyleSheets) v shadow DOM; na ty se style-src nevztahuje. Proto nepotřebujete unsafe-inline ani unsafe-eval.
S adresami 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:;
Jednotlivé položky:
- script-src – umístění
loader.js. Odtud pochází i jádro (core.<hash>.js) a později načítané moduly (prohlídky, text o ochraně osobních údajů, e-shop). - connect-src s wss:// – spojení chatu.
- connect-src s https:// – stejná adresa ještě jednou: probíhá přes ni záloha přes HTTP, offline formulář, nahrávání souborů, text o ochraně osobních údajů a Smart Answer. Pokud tato položka chybí, všimnete si toho až v sítích bez WebSocket – tam se vůbec nenaváže spojení.
- img-src – obrázky v chatu: logo a avatary (vaše
https://adresy nebo obrázkydata:), obrázky reklamní karty a náhledy příloh (z adresy chatu). Pokud chceteimg-srcomezit, zahrňte alespoň adresu chatu a hostitele loga a obrázků karet. Blokovaný obrázek widget zobrazí jako řádek souboru místo náhledu.
Starší prohlížeče bez constructable stylesheets (například Safari před verzí 16.4) přecházejí na prvek <style>, který přísná style-src blokuje. Widget tam funguje, ale bez stylů.
Inline skript není potřeba
Instalace obsahuje pouze <script src> s atributy. Vaše vlastní volání (identify, track, open) patří do vašich souborů se skripty nebo do inline skriptu s nonce:
<script nonce="R4nd0mN0nc3">
ReactiveChat('identify', { userId: '4711', userHash: '…', exp: 1792503600 });
</script>
Šablonu bez inline skriptu najdete v části Identifikace návštěvníků.
Subresource Integrity
loader.js nemá v názvu číslo verze a průběžně se aktualizuje; atribut integrity by při další aktualizaci chat vyřadil z provozu. Jádro se načítá s hashem obsahu v názvu (Architektura). Pokud vaše politika vyžaduje SRI, poskytujte loader.js sami a nastavte data-rc-ws-url (Rychlý start) – pak ale odpovídáte také za jeho aktualizaci.
Izolace od vaší stránky
- Uzavřený shadow DOM. Vaše styly nedosáhnou na widget a jeho styly nedosáhnou na vaši stránku – ani při globálních resetech.
- Žádné cookies. Widget nenastavuje cookies; ID se uchovávají v úložišti prohlížeče, bez souhlasu pouze v
sessionStorage(Integrace ochrany soukromí). - Žádný přístup k polím formulářů. Čtení textu stránky pro asistenta nikdy nečte vstupní pole a na stránkách jako account, checkout a cart vůbec neběží. Další oblasti vyloučíte pomocí
data-rc-private. - Osobní údaje se maskují dvakrát: v prohlížeči před odesláním zprávy (čísla karet s Luhnovou kontrolou, IBAN, e-mail, telefon, daňová identifikační čísla) a na serveru před uložením. Citlivé parametry dotazu (
email,password,token,key,card…) se z přenášených adres odstraňují. - Odkazy a obrázky ze zpráv a karet jsou omezené na
https://; odkazyjavascript:adata:se zahodí.
Kontrola originu
Spojení chatu se přijímá pouze z domén uvedených v projektu v části Povolené originy (včetně subdomén). Cizí stránka, která zkopíruje váš klíč webu, dostane origin_denied. Pokud je seznam prázdný, kontrola neprobíhá – proto vždy zadejte své domény. Podrobnosti v části Přenos.
Samotný klíč webu není tajný; je ve zdrojovém kódu každé stránky.
Co nikdy nepatří do prohlížeče
- tajný klíč identity (pro
userHash) – Identita - tajný klíč endpointu zákaznických dat
rckd_…– Zákaznická data - tajný podpisový klíč webhooku – Webhooky
- klíče API
rc_live_…– Serverové API - klíč proxy
rcpx_…– Vlastní doména
Ani do aplikace, veřejného repozitáře nebo adresy stránky.
Ochrana proti zneužití
Server omezuje spojení, rámce a zprávy na spojení a na adresu a při opakovaném porušení blokuje (uzavření 1008). Za vlastní proxy počítá jednotlivé adresy návštěvníků pouze se správným klíčem proxy – jinak všichni návštěvníci sdílejí adresu proxy. Hodnoty najdete v části Limity a kvóty.
Dále: Vlastní doména
آخر تحديث: