Почему директива CSP script-src разрешена в Chrome/Edge, но не в Firefox?

#javascript #html #security #content-security-policy

Вопрос:

У меня есть этот очень простой заголовок CSP, обратите внимание на script-src директиву: default-src 'none'; script-src 'self'; script-src-elem 'self' https://www.example.com 'unsafe-inline'; style-src https://www.example.com 'unsafe-inline'; manifest-src 'self'; frame-ancestors 'self'; worker-src 'self'; connect-src 'self'; object-src 'none'; img-src 'self' data:;

Заголовок принимается как в Chrome, так и в Edge, но при загрузке приложения в Firefox генерируется следующее нарушение: Content Security Policy: The page’s settings blocked the loading of a resource at inline (“script-src”).

Почему Firefox не разрешает указанные директивы?

Комментарии:

1. Эти директивы выбрасывают всю передовую практику на свалку …

2. @Teemu, рассматривайте это как первый черновик

Ответ №1:

Firefox не поддерживает script-src-elem директиву, поэтому он использует script-src 'self'; , которая не позволяет 'unsafe-inline' .

Chrome поддерживает script-src-elem директиву, поэтому он использует script-src-elem 'self' https://www.example.com 'unsafe-inline'; , которая позволяет 'unsafe-inline' .

У меня нет браузера Edge для тестирования, но он основан на Хроме, поэтому должен поддерживать script-src-elem .

Комментарии:

1. В этом есть смысл, спасибо. Пришлось переместить «небезопасный-встроенный» в директиву script-src, довольно небезопасно.