@@ -131,6 +131,86 @@ async function onExpressJsSetup(server) {
131
131
return next ( ) ;
132
132
} ;
133
133
134
+ server . use ( ( req , res , next ) => {
135
+ res . header ( 'Referrer-Policy' , 'strict-origin-when-cross-origin' ) ;
136
+ res . header ( 'Permissions-Policy' , 'geolocation=(), microphone=(), camera=()' ) ;
137
+
138
+ if ( req . url . startsWith ( '/__community__/veterans' ) || req . hostname === 'veterans.topcoder.com' ) {
139
+ res . header (
140
+ 'Content-Security-Policy' ,
141
+ "default-src 'self';"
142
+ + " script-src 'report-sample' 'self' 'unsafe-inline' 'unsafe-eval'"
143
+ + ` ${ config . CDN . PUBLIC } `
144
+ + ' http://www.google-analytics.com'
145
+ + ' https://43d132d5dbff47c59d9d53ad448f93c2.js.ubembed.com'
146
+ + ' https://assets.ubembed.com'
147
+ + ' https://assets.zendesk.com'
148
+ + ' https://browser.sentry-cdn.com'
149
+ + ' https://cdn.heapanalytics.com'
150
+ + ' https://cdn.segment.com'
151
+ + ' https://connect.facebook.net'
152
+ + ' https://d1of0acg2orgco.cloudfront.net'
153
+ + ' https://d1mwkvp2xbqfs9.cloudfront.net'
154
+ + ' https://d24oibycet9bsb.cloudfront.net'
155
+ + ' https://fast.trychameleon.com'
156
+ + ' https://static.zdassets.com'
157
+ + ' https://www.googletagmanager.com;'
158
+ + " style-src 'report-sample' 'self' 'unsafe-inline'"
159
+ + ` ${ config . CDN . PUBLIC } `
160
+ + ' https://d1of0acg2orgco.cloudfront.net'
161
+ + ' https://d1mwkvp2xbqfs9.cloudfront.net'
162
+ + ' https://d24oibycet9bsb.cloudfront.net'
163
+ + ' https://d2nl5eqipnb33q.cloudfront.net;'
164
+ + " object-src 'none';"
165
+ + " base-uri 'self';"
166
+ + " connect-src 'self'"
167
+ + ` ${ config . API . V2 } /`
168
+ + ` ${ config . API . V3 } /`
169
+ + ` ${ config . API . V4 } /`
170
+ + ` ${ config . API . V5 } /`
171
+ + ` ${ config . CDN . PUBLIC } `
172
+ + ` ${ config . URL . COMMUNITY_APP } `
173
+ + ' https://api.segment.io'
174
+ + ' https://cdn.segment.com'
175
+ + ' https://ekr.zdassets.com'
176
+ + ' https://fast.trychameleon.com'
177
+ + ' https://topcoder.zendesk.com'
178
+ + ' https://stats.g.doubleclick.net'
179
+ + ' https://www.google-analytics.com;'
180
+ + " font-src 'self'"
181
+ + ' data:'
182
+ + ` ${ config . CDN . PUBLIC } `
183
+ + ' https://d1of0acg2orgco.cloudfront.net'
184
+ + ' https://d24oibycet9bsb.cloudfront.net'
185
+ + ' https://43d132d5dbff47c59d9d53ad448f93c2.js.ubembed.com;'
186
+ + " frame-src 'self'"
187
+ + ` ${ config . URL . AUTH } `
188
+ + ' https://www.youtube.com;'
189
+ + " img-src 'self'"
190
+ + ` ${ config . CDN . PUBLIC } `
191
+ + ' https://cdn.segment.com'
192
+ + ' https://d1of0acg2orgco.cloudfront.net'
193
+ + ' https://d24oibycet9bsb.cloudfront.net'
194
+ + ' https://d2nl5eqipnb33q.cloudfront.net'
195
+ + ' https://images.ctfassets.net'
196
+ + ' https://heapanalytics.com'
197
+ + ' https://q.quora.com'
198
+ + ' https://topcoder-prod-media.s3.amazonaws.com'
199
+ + ' https://www.facebook.com'
200
+ + ' https://www.google-analytics.com'
201
+ + ' https://www.google.com'
202
+ + ' https://www.googletagmanager.com'
203
+ + ' https://i.ytimg.com;'
204
+ + " manifest-src 'self';"
205
+ + " media-src 'self';"
206
+ + ' report-uri https://623d4c23f90d055298b24042.endpoint.csper.io/?v=0;'
207
+ + " worker-src 'self';" ,
208
+ ) ;
209
+ }
210
+
211
+ next ( ) ;
212
+ } ) ;
213
+
134
214
/* Log Entries service proxy. */
135
215
server . use ( '/community-app-assets/api/logger' , checkAuthorizationHeader , ( req , res ) => {
136
216
logger . log ( `${ req . clientIp } > ` , ...req . body . data ) ;
0 commit comments