Commit f1122f41 authored by tom goriunov's avatar tom goriunov Committed by GitHub

Merge pull request #257 from blockscout/fix-csp

fix csp issues from sentry
parents ebd766e8 58de165c
......@@ -33,7 +33,18 @@ function getMarketplaceAppsOrigins() {
}
function getMarketplaceAppsLogosOrigins() {
return getMarketplaceApps().map(({ logo }) => logo);
return getMarketplaceApps().map(({ logo }) => new URL(logo));
}
// we cannot use lodash/uniq in middleware code since it calls new Set() and it'is causing an error in Nextjs
// "Dynamic Code Evaluation (e. g. 'eval', 'new Function', 'WebAssembly.compile') not allowed in Edge Runtime"
function unique(array: Array<string | undefined>) {
const set: Record<string, boolean> = {};
for (const item of array) {
item && (set[item] = true);
}
return Object.keys(set);
}
function makePolicyMap() {
......@@ -91,11 +102,17 @@ function makePolicyMap() {
// github avatars
'avatars.githubusercontent.com',
// other github assets (e.g trustwallet token icons)
'raw.githubusercontent.com',
// auth0 assets
's.gravatar.com',
// network assets
...networkExternalAssets.map((url) => url.host),
// marketplace apps logos
...getMarketplaceAppsLogosOrigins(),
...getMarketplaceAppsLogosOrigins().map((url) => url.host),
],
'font-src': [
......@@ -133,7 +150,8 @@ function getCspPolicy() {
return;
}
return [ key, value.join(' ') ].join(' ');
const uniqueValues = unique(value);
return [ key, uniqueValues.join(' ') ].join(' ');
})
.filter(Boolean)
.join(';');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment