Это продолжение https://github.com/w3c/webappsec-csp/issues/215. arturjanc , предложенное перенести это обсуждение в stackoverflow.
Мы пытаемся реализовать CSP для сценариев в JSF и не знаем, безопасно ли повторно использовать одноразовый номер сценария в течение сеанса. Или, как предложил arturjanc, отправьте исходный документ на сервер, который генерирует будущие ответы, в исходном документе.
Предполагая, что повторно использовать одноразовый номер в течение сеанса небезопасно, было бы хорошо просто включить исходный одноразовый номер в скрытый ввод данных, как в настоящее время реализовано здесь . (на данный момент игнорируем уязвимости заголовка CSP / внедрения XSS - это всего лишь прототип)
@ arturjanc: Хотели бы вы снова присоединиться?
Редактировать: Дополнительные мысли относительно ответа arturjanc:
Не могли бы вы подробнее рассказать о том, как реализовать одноразовые одноразовые запросы в типичном современном приложении JSF, то есть просто иметь одну полную загрузку страницы в самом начале и последующую связь только по XHR?
Если я вас правильно понял, вы бы всегда предлагали повторно отправлять изначально сгенерированный одноразовый номер в каждом запросе XHR. Однако на практике это фактически то же самое, что и одноразовые сеансы, не так ли? Просто сложнее в плане реализации.
Строгое реализация одноразовых номеров для каждого ответа подразумевает, что последующие ответы также должны включать все одноразовые номера, созданные ранее в этом сеансе, поэтому мы каким-то образом отследим все одноразовые значения в этом сеансе.
Установка новых заголовков CSP для каждого XHR-ответа, содержащего только недавно созданный одноразовый номер для ответа, вероятно, не будет работать из-за того, что браузеры обрабатывают несколько заголовков CSP по ответам, объединяя их, используя стратегию пересечения, т.е. Content-Security-Policy: 'nonce-1'
в ответе 1 и Content-Security-Policy: 'nonce-2'
в ответе 2 сделает оба одноразовых номера недействительными после ответа 2.