Как реализовать строгую политику безопасности контента с помощью nonce, используя Apache и Angular (20.3) SSR?Apache

Ответить
Anonymous
 Как реализовать строгую политику безопасности контента с помощью nonce, используя Apache и Angular (20.3) SSR?

Сообщение Anonymous »

Я провел все утро, пытаясь реализовать строгую политику безопасности контента (CSP), используя nonce с Apache и Angular 20.3 SSR.
На стороне Apache я могу правильно сгенерировать nonce с помощью mod_cspnonce:

Код: Выделить всё

LoadModule headers_module modules/mod_headers.so
LoadModule cspnonce_module modules/mod_cspnonce.so

Header always set X-Debug-Nonce "%{CSP_NONCE}e"
Заголовок X-Debug-Nonce присутствует в ответе и содержит значение.

Проблема
На стороне Angular SSR (Node/Express) я не могу получить этот nonce и внедрить его в контекст рендеринга Angular.
Ничего не происходит: Angular не делает не отображать атрибуты nonce в тегах или .

Код промежуточного программного обеспечения SSR

Код: Выделить всё

app.use((req, res, next) => {
const nonceHeader = req.headers['X-Debug-Nonce'];
const nonce =
typeof nonceHeader === 'string' ? nonceHeader : 'aezeazeazaez';

angularApp
.handle(req, {
providers: [
{
provide: CSP_NONCE,
useValue: nonce,
},
],
})
.then((response) =>
response ? writeResponseToNodeResponse(response, res) : next(),
)
.catch(next);
});
Даже при принудительном использовании статического резервного значения Angular не вводит nonce.

Что я пробовал
  • Чтение nonce из пользовательского заголовка ответа
  • Предоставление CSP_NONCE во время SSR-рендеринга
  • Непосредственная замена значений в HTML с использованием Apache (

    Код: Выделить всё

    mod_substitute
    )
  • Несколько альтернативных подходов как на стороне Apache, так и на стороне Node.
Ни одна из этих попыток не привела к созданию каких-либо атрибутов nonce в отображаемом HTML.

Вопросы
  • Возможно ли Angular SSR использовать nonce, сгенерированный Apache?
  • Является ли этот подход фундаментально ошибочным, и должен ли nonce генерироваться только сервером Node SSR?
  • Если используется Apache, каков правильный способ пересылки nonce в Angular SSR?
  • Существуют ли какие-либо рабочие эталонные реализации для Angular SSR + strict CSP (no unsafe-inline)?
Будем признательны за любые рекомендации и рекомендации.

Подробнее здесь: https://stackoverflow.com/questions/798 ... che-and-an
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Apache»