Every CDN-hosted script and stylesheet is now served from our own servers, closing a supply-chain exposure.
Self-Hosted Third-Party Assets
Server-rendered pages pulled executable JavaScript and CSS from four public content delivery networks, with no integrity checking, and at least one reference was unpinned — it resolved to whatever the current release happened to be. A compromised package would have executed in a logged-in user’s session with no deployment on our side. All of these assets are now served from our own static files, removing the third party entirely.
Strict Script Policy for the Application, Relaxed for Legacy Pages
Observation showed the main application needs no relaxation of the script policy, while a number of older server-rendered pages still carry inline scripts. The strict policy is applied to the application and the relaxed one only to those legacy pages, so a new page inherits the strict policy automatically rather than being missed off a list.