Ritorn lejn il-blog
Implementazzjoni20 ta’ Awwissu 20268 min ta' qariAġġornat 30 ta’ Awwissu 2026

Content Security Policy għal Chatbots fuq il-Web: Konfigurazzjoni Sikura ta' Widget, API, Stampi u Streaming

CSP prattika għal chatbots fuq il-web tippermetti biss l-iscripts, il-konnessjonijiet mal-API, l-istreams u l-istampi verament meħtieġa - mingħajr wildcards mhux meħtieġa.

Teknika tal-avvenimenti adulta tivverifika modulu ta' konnessjoni sikur għal widget ta' chatbot fuq palk miftuħ fis-sajf.

Chatbot fuq il-web rari jikkonsisti minn fajl wieħed ta' JavaScript fil-browser. Loader jiftaħ il-widget, API tirċievi l-messaġġi, it-tweġibiet jaslu bħala stream, u l-ritratti tal-profil jew il-media jistgħu jkunu ospitati fuq dominju ieħor. Content Security Policy (CSP) tagħmel dawn il-mogħdijiet viżibbli u tillimitahom: il-browser jilloggja jew jikkonnettja biss ma' dak li l-web uffiċjalment tippermetti.

Din hija tieni saff ta' protezzjoni importanti kontra Cross-Site Scripting u kontenut mhux mistenni minn terzi persuni. Madankollu, CSP Niċċitawha ma tissewwa la API mhux sikura, la awtentikazzjoni nieqsa, la validazzjoni tal-input difettuża, u lanqas Prompt Injection. Tnaqqas il-possibbiltajiet ta' kodiċi injettat u tillimita r-radju ta' żball. Għalhekk, huwa kruċjali li jkun hemm policy żgħira u ttestjata kemm jista' jkun minflok lista twila ta' dominji approvati b'mod ġenerali.

Għaliex il-Widgets ta' Chatbot Għandhom Bżonn Regoli CSP Speċjali

F'paġna ta' kontenut klassika, ir-riżorsi mill-oriġini stess spiss ikunu biżżejjed. Min-naħa l-oħra, chatbot ikompli jikkomunika wara li jilloggja. connect-src jikkontrolla, fost l-oħrajn, fetch(), XMLHttpRequest, EventSource, WebSocket u sendBeacon(). Huwa proprju hawnhekk li jgħaddu l-messaġġi, it-tweġibiet bi streaming, l-avvenimenti ta' feedback u, jekk applikabbli, it-telemetrija. Jekk l-oriġini t-tajba tkun nieqsa, il-widget jidher iżda ma jkunx jista' jwieġeb.

Komponenti oħra jaqgħu taħt direttivi separati. script-src jiddeċiedi dwar il-loader tal-widget, img-src dwar l-avatars u l-istampi tat-tweġibiet, style-src dwar it-stylesheets, u font-src dwar fonts esterni. Widget ibbażat fuq iframe għandu bżonn ukoll frame-src. default-src iservi bħala fallback għal ħafna tipi ta' riżorsi mhux speċifikati b'mod espliċitu, iżda ma jissostitwixxix analiżi konxja tar-riżorsi.

Għalhekk, l-aktar xogħol preparatorju importanti ma jsirx fil-ġeneratur tas-CSP, iżda fil-browser: Iftaħ paġna rappreżentattiva, ibda konversazzjoni, ħalli tweġiba twila tistrimja, iftaħ is-sorsi, ibgħat feedback, u ttestja każijiet ta' żbalji kif ukoll handoffs. Fil-pannell tan-netwerk tista' tara l-origins attwalment ikkuntattjati. Dokumentaha għal kull host: il-skop, it-tip ta' riżors, u l-persuna responsabbli.

Approva l-Erbgħa Mogħdijiet tad-Data Rilevanti Separatament

1. Script tal-Widget u Inizjalizzazzjoni

Ikseb il-loader preferibbilment minn indirizz stabbli u verżjonat. Permess bħal script-src https: ikun wiesa' wisq minħabba li jippermetti scripts minn kwalunkwe dominju HTTPS. Minflok, ippermetti l-CDN origin eżatt jew ipprovdi l-loader int stess. Jekk l-integrazzjoni tkun teħtieġ kodiċi inline, uża nonce ġdid generat għal kull tweġiba HTTP jew hash adattat. 'unsafe-inline' m'għandux isir soluzzjoni permanenti mgħaġġla.

Nonce għandu jintrabat biss ma' scripts li t-template min-naħa tas-server jiġġenera nnifsu. Middleware li żżid l-istess nonce ma' kull tag ta' script eżistenti b'mod għomja tagħti wkoll fiduċja lil tags injettati. Għal script estern statiku u verżjonat, Subresource Integrity tista' tgħin ukoll; iżda f'każ ta' fajls li jinbidlu ta' spiss, il-hash irid jiġi aġġornat b'mod kkontrollat.

2. API, Server-Sent Events u WebSocket

Talbiet POST normali u tweġiba kkontrollata bi streaming permezz ta' fetch() għandhom bżonn l-HTTPS API origin f'connect-src. Server-Sent Events permezz ta' EventSource jaqgħu wkott taħt dan. Għal WebSocket, ikteb l-origin wss:// konkret b'mod espliċitu. MDN jinnota li 'self' mhux bilfors jinkludi skemi ta' WebSocket awtomatikament fil-browsers kollha. M'hemm l-ebda direttiva separata bl-isem stream-src.

CSP u CORS isolvu kompiti differenti. CSP tiddetermina fejn il-paġna tista' tikkonnettja b'mod ġenerali; CORS jiddetermina min-naħa tas-server liema origins jistgħu jaqraw tweġiba fil-browser. Għalhekk, permess tas-CSP ma jranġax żball ta' CORS u lanqas access token li skada. Proxy bl-istess origin jista' jissimplifika l-policy, iżda xorta għandu jieħu ħsieb l-awtentikazzjoni, il-limiti tar-rata (rate limits), it-timeouts, u l-passaġġ tal-iżbalji b'mod korrett.

3. Stampi, Avatars u Media Ġenerata

Ippermetti f'img-src biss l-oriġini tiegħek stess u l-origin tal-media li fil-fatt tintuża. data: hija meħtieġa biss jekk il-widget juża stampi żgħar inkorporati; blob: hija meħtieġa biss jekk il-browser jiġġenera l-istampi bħala Blob URL. Kull sors addizzjonali jkabbar il-wiċċ ta' attakk. Jekk immaġni l-ewwel titniżżel permezz ta' fetch() u mbagħad tinbidel f'URL ta' blob, kemm connect-src kif ukoll img-src jistgħu jiġu affettwati.

Ittestja mhux biss l-avatar standard. Iċċekkja l-istampi tal-preview, screenshots tas-sorsi, attachments ta' fajls, dark mode, u l-wiri ta' żbalji għal media mhux disponibbli. Il-parametri tal-URL jistgħu jġorru informazzjoni kunfidenzjali fir-rapporti tas-CSP; għalhekk l-endpoints tar-rapporti għandhom jippproċessaw ir-rapporti b'mod li jiffranka d-data u ma jżommumx b'mod indeterminat.

4. iframe, Styles, Fonts u Workers Opzjonali

Widget inkorporat direttament fid-DOM normalment ma jkollux bżonn frame estern. F'dak il-każ, frame-src 'none' jista' jibqa'. Jekk min-naħa l-oħra ċ-chat jaħdem f'iframe, ippermetti esklussivament l-origin eżatt tiegħu. Dan huwa differenti minn frame-ancestors: din id-direttiva tistabbilixxi fir-riżors ipprovdut liema paġni jistgħu jinkorporawh. Il-fornitur tal-widget għandu għalhekk jsettjaha b'mod xieraq fuq it-tweġiba tal-iframe tiegħu.

L-istess prinċipju japplika għal styles u fonts. Ippermetti hosts konkreti u evita 'unsafe-inline' meta l-integrazzjoni tippermetti dan. Workers jew funzjonijiet tal-awdjo jiżdiedu biss jekk il-prodott fil-fatt jużahom. Permess kawtelattiv ta' blob:, dominji sħaħ b'wildcard, jew sorsi ta' media arbitrarji jagħmel l-verifiki futuri aktar diffiċli.

Eżempju Realistiku ta' CSP għal Chatbot Widget

Id-dominji li ġejjin huma dominji ta' eżempju rriżervati apposta. Biddilhom bl-origins mill-analiżi tan-netwerk tiegħek stess. L-eżempju jassumi loader estern, HTTPS API, WebSocket separat għall-istreaming, u host tal-media. Ma jużax wildcards ġenerali:

Content-Security-Policy:
  default-src 'self';
  script-src 'self' https://cdn.chat.example 'nonce-{RANDOM}';
  connect-src 'self' https://api.chat.example wss://stream.chat.example;
  img-src 'self' data: https://media.chat.example;
  style-src 'self' 'nonce-{RANDOM}';
  font-src 'self';
  frame-src 'none';
  worker-src 'self';
  object-src 'none';
  base-uri 'self';
  frame-ancestors 'self';
  form-action 'self';
  upgrade-insecure-requests;

{RANDOM} jirrappreżenta valur qawwi generat mill-ġdid għal kull tweġiba, li jkun identiku fil-header u fl-elementi permissibbli ta' script jew style. Jekk il-widget tiegħek juża iframe, ibdel frame-src 'none' bl-origin eżatt tal-widget. Jekk juża biss HTTPS streaming permezz ta' fetch() jew EventSource, l-origin tal-WebSocket mhux meħtieġ. Neħħi kull sors li ma jkunx meħtieġ wara test funzjonali komplut.

Il-policy hija punt ta' tluq prattiku, mhux template universali. CSP stretta moderna tista' tikkontrolla l-iscripts saħansitra aktar permezz ta' nonces jew hashes u 'strict-dynamic'. Jekk dan hux possibbli mingħajr problemi ta' kompatibbiltà jiddependi minn kif il-loader jiġġenera scripts oħra. Iċċara dan il-proċess mal-fornitur u ttestja l-browsers, il-consent mode, u l-varianti tad-deployment.

Milli Tuża Report-Only għal Policy Enforced

Tixgħelx policy ġdida mingħajr ma tivverifikaha. Il-mechanism tal-W3C Content-Security-Policy-Report-Only jirrapporta ksur mingħajr ma jibblokka r-riżorsi. Dan jgħinek tidentifika hosts ta' stampi li fsejt, origin ta' streaming differenti, jew kodiċi inline qabel ma l-utenti jiġu affettwati. OWASP jirrakkomanda l-HTTP header bħala l-metodu preferut ta' pprovditur; kuntrarjament għall-element meta, dan jappoġġja l-firxa sħiħa ta' funzjonijiet.

  1. Oħloq inventarju: Ittestja l-ftuħ tal-widget, l-ewwel messaġġ, tweġiba twila bi streaming, sorsi, stampi, feedback, handoff u bidliet fil-kunsens fuq tipi differenti ta' paġni.
  2. Iskjera Report-Only: Ibda bil-policy stretta ppjanata u iġbor il-ksur f'perjodu ta' żmien limitat. Iffiltra l-estensjonijiet tal-browser u sinjali ta' storbju oħra li ma jistgħux jiġu riprodotti.
  3. Ġustifika kull host: Espandi l-policy biss jekk funzjoni speċifika tal-prodott tkun teħtieġ l-origin. Evita li tuża wildcards bħala reazzjoni għal rapporti individwali.
  4. Ittestja b'mod awtomatizzat: Żid testijiet end-to-end li jibagħtu messaġġ, jistennew l-istreaming u jilloggjaw immaġni. Fl-istess ħin, iċċekkja l-console tal-browser għal ksur tal-CSP.
  5. Enforce u segwi: Attiva l-header Content-Security-Policy, żomm għajnejk fuq varjant Report-Only aktar strett b'mod parallel, u qabbel ir-rati ta' żbalji.

Rollout b'passi gradwali jaqbel sew ma' chatbot f'Shadow Mode. Għal metriċi speċifiċi għall-istreaming, l-artiklu dwar latenza u timeouts jista' jgħin. Il-ksur tal-CSP għandu jitqies bħala sinjal separat: Timeout u konnessjoni mblukkata jeħtieġu analiżi ta' kawża fundamentali differenti.

Konfigurazzjonijiet Żbaljati Tipiki

  • Listi ta' sorsi wesgħin wisq: *, https: jew dominji kbar b'wildcards jagħmlu l-policy konvenjenti, iżda dgħajfa u diffiċli biex tivverifikaha.
  • L-ittestjar isir biss fuq l-inizjalizzazzjoni viżibbli: Il-widget jinfetaħ, iżda l-istreaming, il-feedback, l-istampi jew il-handoff ifallu aktar tard.
  • 'unsafe-inline' jibqa' b'mod permanenti: Għajnuna temporanja ta' kompatibbiltà ma tiġix sostitwita b'nonces, hashes jew kodiċi estern.
  • CSP tiġi konfuża ma' kontroll tal-aċċess: Il-policy ma tissostitwixxix permessi min-naħa tas-server, l-ebda verifika ta' sessjoni u l-ebda protezzjoni kontra sejħiet ta' għodod abbużivi.
  • Ir-rapporti fihom wisq data: URLs sħaħ, parametri ta' query jew kuntest tal-utent jispiċċaw fil-monitoring għal żmien twil mingħajr bżonn.
  • Staging u produzzjoni mhumiex sinkronizzati: Hosts differenti ta' CDN, API jew WebSocket isiru viżibbli biss wara li s-sit ikun lajv.

Anke script-src strett ma jagħmilx terz permess sikur awtomatikament: Il-JavaScript tiegħu jaħdem bil-kapaċitajiet li l-paġna tiegħek tagħtih. Għalhekk, iċċekkja l-bidliet fil-fornituri, subdominji ġodda u aġġornamenti tal-loader bħal dipendenzi oħra relatati mas-sigurtà. L-artiklu dwar protezzjoni minn prompt injection jikkumplimenta din il-fruntiera tal-browser b'regoli għal RAG, għodod u data.

Lista ta' Kontroll Qabel it-Tnedija Lajv

  • L-origins kollha meħtieġa minn sessjonijiet reali tal-browser huma dokumentati u ġustifikati teknikament?
  • script-src jippermetti biss il-loader u scripts ikkontrollati, mingħajr 'unsafe-inline' ġenerali?
  • connect-src fih l-origins eżatti ta' HTTPS, EventSource u, fejn applikabbli, WSS?
  • Is-sorsi ta' stampi, styles, fonts, frames u workers huma definiti separatament u stretti kemm jista' jkun?
  • In-nonces huma generati mill-ġdid għal kull tweġiba u ssettjati biss fuq elementi ta' fiduċja?
  • Ġew ittestjati bidliet fil-kunsens, streams twal, stampi, żbalji, handoff u apparati desktop u mobbli?
  • Il-policy l-ewwel giet osservata f'Report-Only u mbagħad inforzata bħala header?
  • Ir-rapporti tas-CSP jiġu pproċessati mingħajr data personali mhux meħtieġa jew data kunfidenzjali tal-URL?
  • Hemm test ta' regressjoni awtomatizzat wara aġġornamenti tal-widget jew tal-infrastruttura?

Konklużjoni

CSP tajba għal chatbots fuq il-web mhix kollezzjoni ta' eċċezzjonijiet, iżda mappa teknika tal-mogħdijiet permissibbli fil-browser. Isseparat l-loader, l-API, l-istreaming, l-istampi u r-riżorsi tal-iframe, ippermetti origins eżatti u introduċi l-policy l-ewwel fil-modalità Report-Only. B'hekk, il-widget jibqa' jaħdem fully filwaqt li scripts u konnessjonijiet mhux mistennija jkollhom ferm inqas spazju fejn jistgħu jaġixxu.

Sorsi

Sturna żjarat tal-websajt f’konversazzjonijiet aħjar

Imla chatbot AI li jkun utli mill-ewwel jum

Iċċaħħad ChatReact bil-websajt tiegħek, id-dokumentazzjoni, u fatti approvati sabiex il-viżitaturi jiksbu tweġibiet aktar malajr u t-tim tiegħek jirċievi inqas mistoqsijiet ripetuti.

Artikli relatati

Kompli taqra