Заголовок http Content-Security-Policy запускает нарушение connect-sr c в Chrome при назначении внутреннему HTML в обработчике события beforeunload - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь понять, почему я получаю отчет о политике безопасности контента о нарушении connect-src только от Chrome (не Firefox) для случая, когда Javascript выполняет что-то вроде:

somediv.innerHTML = "...<img src='https://thirdpartysite/someimage.jpg'>..."

в обработчике window.onbeforeunload.

Я сделал небольшую демонстрацию проблемы здесь: https://testcsp.savesnine.info/. Это присваивает некоторый HTML элементу img со сторонним src в обработчике window.onload (таким образом, изображение отображается при загрузке страницы) и в window.onbeforeunload. Назначение onload не запускает CSP, но onbeforeunload делает.

Оно также запускается на connect-src, а не img-src (я установил img-src для разрешения сторонних изображений, но не connect-src, и я не верю, что мне это нужно, и в любом случае это победит). Вы можете увидеть заголовок CSP и отчет CSP, запускаемый из отладчика Chrome (когда вы go переходите на другую веб-страницу - для этого требуется Preserve Log, чтобы консоль увидела его, или в сети для отправки отчета в /csp.php). Заголовок CSP:

default-src 'self';style-src 'self';img-src 'self' https:;script-src 'self';connect-src 'self';font-src chrome-extension: moz-extension: safari-extension: data:;report-uri /csp.php

Это искусственный пример, но настоящая проблема возникла из-за трудно диагностируемого отчета CSP, который, казалось, произошел через несколько минут после того, как люди закончили работу в Интернете. страница, на которой это произошло (согласно моим файлам журнала). В конце концов я понял, что он прибыл из редактора tinymce, когда они закрывали страницу браузера (или уходили в другое место), который устанавливает обработчик onbeforeunload для записи HTML, который он редактировал (содержит сторонние изображения, но допускается * 1031). *) обратно в исходный элемент контейнера, откуда пришло содержимое.

Я думаю, что у меня есть правильный CSP для моего случая здесь, так что это может быть ошибка Chrome, но в равной степени я мог неправильно понять что-то о CSP .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...