@@ -74,6 +74,7 @@ export const buildTimeCSPDirectives: CSPDirectives = {
7474 'https://*.amazonaws.com' ,
7575 'https://*.blob.core.windows.net' ,
7676 ...getHostnameFromUrl ( env . NEXT_PUBLIC_BRAND_LOGO_URL ) ,
77+ ...getHostnameFromUrl ( env . NEXT_PUBLIC_BRAND_FAVICON_URL ) ,
7778 ] ,
7879
7980 'media-src' : [ "'self'" , 'blob:' ] ,
@@ -146,19 +147,26 @@ export function generateRuntimeCSP(): string {
146147 const ollamaUrl = getEnv ( 'OLLAMA_URL' ) || 'http://localhost:11434'
147148
148149 const brandLogoDomains = getHostnameFromUrl ( getEnv ( 'NEXT_PUBLIC_BRAND_LOGO_URL' ) )
150+ const brandFaviconDomains = getHostnameFromUrl ( getEnv ( 'NEXT_PUBLIC_BRAND_FAVICON_URL' ) )
149151 const privacyDomains = getHostnameFromUrl ( getEnv ( 'NEXT_PUBLIC_PRIVACY_URL' ) )
150152 const termsDomains = getHostnameFromUrl ( getEnv ( 'NEXT_PUBLIC_TERMS_URL' ) )
151153
152- const allDynamicDomains = [ ...brandLogoDomains , ...privacyDomains , ...termsDomains ]
154+ const allDynamicDomains = [
155+ ...brandLogoDomains ,
156+ ...brandFaviconDomains ,
157+ ...privacyDomains ,
158+ ...termsDomains ,
159+ ]
153160 const uniqueDynamicDomains = Array . from ( new Set ( allDynamicDomains ) )
154161 const dynamicDomainsStr = uniqueDynamicDomains . join ( ' ' )
155162 const brandLogoDomain = brandLogoDomains [ 0 ] || ''
163+ const brandFaviconDomain = brandFaviconDomains [ 0 ] || ''
156164
157165 return `
158166 default-src 'self';
159167 script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.google.com https://apis.google.com https://*.vercel-scripts.com https://*.vercel-insights.com https://vercel.live https://*.vercel.live https://vercel.com https://*.vercel.app https://vitals.vercel-insights.com https://b2bjsstore.s3.us-west-2.amazonaws.com;
160168 style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
161- img-src 'self' data: blob: https://*.googleusercontent.com https://*.google.com https://*.atlassian.com https://cdn.discordapp.com https://*.githubusercontent.com https://*.public.blob.vercel-storage.com ${ brandLogoDomain } ;
169+ img-src 'self' data: blob: https://*.googleusercontent.com https://*.google.com https://*.atlassian.com https://cdn.discordapp.com https://*.githubusercontent.com https://*.public.blob.vercel-storage.com ${ brandLogoDomain } ${ brandFaviconDomain } ;
162170 media-src 'self' blob:;
163171 font-src 'self' https://fonts.gstatic.com;
164172 connect-src 'self' ${ appUrl } ${ ollamaUrl } ${ socketUrl } ${ socketWsUrl } https://*.up.railway.app wss://*.up.railway.app https://api.browser-use.com https://api.exa.ai https://api.firecrawl.dev https://*.googleapis.com https://*.amazonaws.com https://*.s3.amazonaws.com https://*.blob.core.windows.net https://*.vercel-insights.com https://vitals.vercel-insights.com https://*.atlassian.com https://*.supabase.co https://vercel.live https://*.vercel.live https://vercel.com https://*.vercel.app wss://*.vercel.app https://pro.ip-api.com ${ dynamicDomainsStr } ;
0 commit comments