Xavfsizlik va CSP
Embed agentlarni manzil ruxsatlari, brauzer siyosatlari va hisob maʼlumotlarini himoyalaydigan o‘rnatish bilan saqlang.
Embed agentlarni manzil ruxsatlari, brauzer siyosatlari va hisob maʼlumotlarini himoyalaydigan o‘rnatish bilan saqlang.
Ruxsat etilgan manzillar#
Joylashtirish yoqilmagan yoki brauzerdagi ota sahifaning aniq manziliga ruxsat berilmagan bo‘lsa, embed xavfsiz tarzda ishlamaydi. Origin scheme://hostname[:port] shaklida bo‘ladi; yo‘l va query string uning qismi emas.
| Host sahifa | Ruxsat qiymati |
|---|---|
https://example.com/pricing | https://example.com |
https://www.example.com/help | https://www.example.com |
https://preview.example.com:8443/demo | https://preview.example.com:8443 |
http://localhost:3000 | http://localhost:3000 |
Ishlab chiqarish, preview va mahalliy manzillarni alohida qo‘shing. O‘rnatish xatosini tuzatish uchun wildcard qo‘shmang: aks holda ochiq slugni ko‘chirgan har kim agentni joylashtirib, sayt kreditlarini ishlatishi mumkin.
Content Security Policy#
Yuklagichga skript ruxsati, widgetga iframe ruxsati, yuklagichning ko‘rinish so‘roviga esa ulanish ruxsati kerak bo‘lishi mumkin. Bu manbalarni hostdagi mavjud direktivalarga qo‘shing; yetuk siyosatni ushbu minimal misol bilan butunlay almashtirmang.
Content-Security-Policy:
default-src 'self';
script-src 'self' https://makeagent.fast;
frame-src https://makeagent.fast;
connect-src 'self' https://makeagent.fast;Sayt script-src-elem ishlatsa, https://makeagent.fastni u yerga ham qo‘shing. Tashqi yuklagich unsafe-inline talab qilmaydi, ammo host freymvorkining o‘z nonce yoki hash talablari bo‘lishi mumkin. Sinov vaqtida report-only siyosati foydali:
Content-Security-Policy-Report-Only:
script-src 'self' https://makeagent.fast;
frame-src https://makeagent.fast;
connect-src 'self' https://makeagent.fast;Brauzer konsoli CSP buzilishini ko‘rsatsa, default-srcni kengaytirish o‘rniga nomi ko‘rsatilgan direktivani tuzating va ochiq sahifani qayta sinang.
Mikrofon va brauzer ruxsatlari#
Yuklagich iframeʼni allow="microphone; autoplay; clipboard-write" bilan yaratadi. Host darajasidagi qatʼiy Permissions Policy baribir bu ruxsatni bekor qilishi mumkin. Ovoz yoqilgan bo‘lsa, host javobida Make Agent Fast iframe manziliga ruxsat bering:
Permissions-Policy: microphone=(self "https://makeagent.fast")Tashrifchi brauzerda mikrofonga ham ruxsat berishi kerak. HTTPS orqali sinang; brauzerlar odatda xavfsiz bo‘lmagan ochiq manzillarda mikrofonni cheklaydi. Matnli chatga mikrofon ruxsati kerak emas.
Xabar va iframe chegarasi#
Yuklagich faqat joriy sayt slugiga bog‘liq maf:ready, maf:open, maf:close va mavzu hayot sikli xabarlarini qabul qiladi. Iframeʼdan kelgan xabarlar https://makeagent.fast manziliga nisbatan tekshiriladi. Yuklagichni o‘z paketingizga ko‘chirmang va ushbu manzil tekshiruvini olib tashlamang.
Host sahifa kodi iframe DOMʼiga kirishga urinmasligi kerak. Iframe ataylab boshqa manzildan keladi; qo‘llab-quvvatlanadigan integratsiya yuzasi — yuklagich, uning hujjatlashtirilgan data-* atributlari va quyidagi shaxsni aniqlash metodlari.
Sirlar va tashrifchi shaxsi#
Sayt slugʼi va yuklagich URLʼi ochiq. Qolgan barcha qiymat sahifa manbasidan tashqarida qoladi:
- MAF API kaliti, OAuth tokeni, AI provayder kaliti, konnektor tokeni yoki webhook sirini kod parchaga hech qachon qo‘shmang.
- Sirni JavaScript paketiga kiritmang yoki
NEXT_PUBLIC_*,VITE_*kabi brauzer muhit o‘zgaruvchisi orqali oshkor qilmang. - Ilova sayt yaratishi, agentni yangilashi yoki yopiq workspace maʼlumotini olishi kerak bo‘lsa, server API integratsiyasidan foydalaning.
- Email manzili, account ID yoki boshqa tashrifchi maʼlumotini
data-label,data-localeyoki query parametriga joylamang.
Tizimga kirgan mijozlarni aniqlash#
Agent → Amallar → Tizimga kirgan mijozlar boʻlimida maxfiy kalit yarating va koʻrsatilganda nusxalang. Uni faqat serverda MAF_SECRET_KEY sifatida saqlang; brauzer kodi, ochiq muhit oʻzgaruvchilari yoki repozitoriyga joylamang. Bu agent kaliti workspace API kalitidan alohida. Almashtirish eski tokenlarni bekor qiladi va Lookups soʻrovlarining imzo kalitini ham oʻzgartiradi. Oʻchirish yangi kalit sozlanmaguncha tasdiqlangan mijoz shaxsi va lookuplarni oʻchiradi.
Mavjud koddagi yuklagich URLʼini https://makeagent.fast/embed.js?v=20261022-openga yangilang. Eski versiyali URL bir yil keshlanishi mumkin va bu SDKni taqdim etmaydi. Origin ruxsat roʻyxati va CSP himoyalarini saqlang.
Autentifikatsiyalangan server tokenni oʻz sessiyasidagi mijozdan olishi kerak. Brauzer yuborgan ixtiyoriy mijoz IDʼini imzolamang. Bu yordamchi funksiya faqat serverda ishlaydi:
import { createHmac } from "node:crypto";
export function signCustomerIdentity(customer) {
const secret = process.env.MAF_SECRET_KEY;
if (!secret) throw new Error("MAF_SECRET_KEY is required");
const encode = (value) => Buffer.from(JSON.stringify(value)).toString("base64url");
const now = Math.floor(Date.now() / 1000);
const header = encode({ alg: "HS256", typ: "JWT" });
const payload = encode({
sub: customer.id,
email: customer.email,
name: customer.name,
iat: now,
exp: now + 3600,
});
const body = `${header}.${payload}`;
const signature = createHmac("sha256", secret).update(body).digest("base64url");
return `${body}.${signature}`;
}Sarlavhada alg: "HS256" va typ: "JWT" boʻlishi shart. sub — boʻsh boʻlmagan, 128 belgigacha barqaror ID. exp — soniyalardagi butun Unix vaqti; kelajakda, ammo hozirdan koʻpi bilan 24 soat keyin. Ixtiyoriy iat butun son, email yaroqli va 160 belgigacha, name esa 120 belgigacha. Toʻliq token 2 048 belgidan oshmasin. Keraksiz ixtiyoriy maydonlarni yubormang. JWT mazmuni imzolanadi, shifrlanmaydi.
Faqat tokenni shu autentifikatsiyalangan brauzer sessiyasiga HTTPS orqali, Cache-Control: no-store bilan qaytaring. Uni log, URL yoki localStorageʼga yozmang. embed.js yuklangach, javobdan olingan tokenni widgetga uzating:
window.MakeAgentFast.identify(token);Yuklagichdan oldin boshlash uchun ilova boshlanishida window.MakeAgentFastSettings = { identityToken: token } oʻrnating. Yuklagich oxirgi tokenni xotirada saqlaydi va iframe tayyor boʻlganda yuboradi. Muddati tugashidan oldin serverdan yangi token olib, identifyni yana chaqiring. Har bir chat soʻrovi tokenni yuboradi; suhbat soʻrovlari x-maf-identitydan foydalanadi. Tasdiqlangan host shaxsi af_xid cookieʼsiga tayanmaydi.
Ilovangizdan chiqishda, boshqa akkaunt chatini koʻrsatishdan oldin quyidagini chaqiring va ilovada saqlangan boshlangʻich tokenni ham tozalang:
window.MakeAgentFast.logout();Bu widget shaxsi va lokal suhbat keshini tozalaydi, ammo ilovangizdan chiqarmaydi yoki nusxalangan tokenni bekor qilmaydi. Boshqa mijozning sub qiymatiga oʻtish ham keshni tozalaydi. Soxta, muddati tugagan yoki boshqa agentga tegishli token shu mijoz tarixini ochmaydi; oddiy tashrifchi yoʻli ishlaydi. Qisqa amal muddatidan va har agent uchun alohida kalitdan foydalaning. Egasi uchun repetitsiya shaxs tokenlarini eʼtiborsiz qoldiradi; haqiqiy embedda ikkita test akkaunti bilan izolyatsiyani tekshiring.
Rozilik, maxfiylik va saqlash#
Embedni maxfiylik va rozilik siyosatingizga ko‘ra tasniflang. Rozilik boshqaruvchisi zarur bo‘lmagan uchinchi tomon skriptlarini to‘ssa, embed.jsni faqat tegishli rozilikdan keyin yuklang. Ungacha boshqaruvchini chetlab o‘tish o‘rniga oddiy havola yoki faol bo‘lmagan placeholder ko‘rsating.
Siyosatingiz va amaldagi qonun talab qilsa, tajribada AI, mikrofon yozuvi, lid yig‘ish, tahlil yoki tashqi xabar provayderi ishlatilishini tashrifchiga bildiring. Ishga tushirishdan oldin saytingizdagi suhbatlarni saqlash va o‘chirish jarayonini tekshiring; embedni uzish yoki olib tashlash mavjud suhbatlarni o‘z-o‘zidan o‘chirmaydi.
Xavfsiz ishga tushirish ro‘yxati#
- Mijoz sayti joylashtirilgan, embed agenti yoqilgan va tekshirilgan.
- Faqat kerakli aniq ota manzillarga ruxsat berilgan.
- Host CSP keng wildcardlarsiz skript, iframe va ko‘rinish so‘roviga ruxsat beradi.
- Mikrofon faqat ovoz yoqilganda ruxsat etilgan va HTTPS orqali sinalgan.
- HTML, paket natijasi yoki brauzer logida hisob maʼlumoti yoxud yopiq tashrifchi qiymati yo‘q.
- Rozilik boshqaruvchisi rozilikdan oldin va keyin sinalgan.
- Nusxalangan kod ruxsat etilganlar ro‘yxatida yo‘q manzilda ishlamaydi.