...
Вопрос:
Чтобы уточнить: браузер по-разному относится к изображениям или другим ресурсам, не относящимся к документам, если они поставляются с заголовком CSP присоединен?
blockquote>Мой ответ:
Сначала определите « не-документ »? У W3 (ребята, которые определяют, как на самом деле работает интернет) есть определение «документа» , и я предполагаю, что ваше определение такое же.
Если это не так, просьба уточнить соответственно.
Правила W3 по политике безопасности контента (по состоянию на октябрь 2018 г.) гласят, что цели CSP заключаются в следующем:
[ 1113]
blockquote>Снижение риска атак с внедрением контента, предоставляя разработчикам достаточно детальный контроль над:
Ресурсами, которые могут быть запрошены (и впоследствии внедрены или выполнены) от имени конкретный документ или работник
Выполнение встроенного скрипта
Динамическое выполнение кода (посредством eval () и аналогичных конструкций)
[1155 ]Применение встроенного стиля
Снижение риска атак, требующих внедрения ресурса в вредоносный контекст («Пиксель»). Совершенная «атака, описанная в [TIMING], например), предоставляя разработчикам детальный контроль над источниками, которые могут встраивать данный ресурс.
Предоставить структуру политики, которая позволяет разработчикам снижать привилегии своих приложений.
Обеспечить механизм отчетности, который позволяет разработчикам обнаруживать недостатки, эксплуатируемые в дикой природе.
Примечание пункт 1 (i);
«Ресурсы, которые могут быть запрошены (и впоследствии внедрены или выполнены) от имени конкретного документа или работника »
blockquote>Документ определяется, как указано выше, и работа определяется, по сути, как то, что использует модель DOM Javascript ( это может быть неверно ).
Таким образом, CSP, как ожидается, будет применяться к документам (данное) и работникам .
Являются ли другие (MP3, PDF и т. Д.) Файлы документами или рабочими? Они не являются документами, но то, как они обрабатываются в браузерах , подразумевает, что они содержатся в структуре документов .
Пожалуйста, посмотрите этот старый Chrome Bug report . При этом PDF не смог загрузить содержимое из-за настроек CSP веб-сайтов, и PDF фактически загружался плагином браузера (родным для всех современных браузеров) и поэтому был подвержен влиянию
object-src
CSP.Это CSP версии 1, и у меня нет оснований думать, что либо способ, которым браузеры обрабатывают файлы без документов, либо способ интеграции CSP значительно изменился с тех пор, как была обнаружена эта ошибка.
Поэтому: браузерам НЕ ТРЕБУЕТСЯ применять CSP к недокументированным и нерабочим объектам, но из-за того, как работают браузеры, они, вероятно, будут применять заголовки CSP к недокументированным и не-документальным объектам. -работающие объекты, поскольку эти объекты будут обернуты в модели документов для облегчения работы с файлами в браузере.
Но Это происходит из-за кодирования браузера и не должно ожидаться с октября 2018 года.
Вы могли бы попытаться делать, рекурсивное делают, что-то как
MAP_FILES = $(shell find $(TMP) -name "*.map")
all: generate_map_files
generate_map_files:
./map-builder; $(MAKE) work_with_map_files
work\_with\_map_files: $(MAP_FILES)
./map-user
%.map:
./map-edit $@
С GNU делают, можно использовать в своих интересах функцию переделки make-файла, которая вызывает GNU, делают, чтобы автоматически перезапустить, если какой-либо из включенных make-файлов изменяется во время начальной передачи. Например:
.PHONY: map_files.d
-include map_files.d
map_files.d:
./map_builder
echo "work_with_map_files: `ls *.map`" > map_files.d
work_with_map_files:
./map_user
В дополнение к функции переделки make-файла это решение использует то, что GNU делает, позволяет Вам указывать несколько строк предпосылок для цели. В этом случае файл карты prereqs объявляется в динамично сгенерированном map_files.d файле. При объявлении map_files.d, поскольку ФАЛЬШИВАЯ цель гарантирует, что всегда повторно создается при выполнении сборки; это может или не может быть соответствующим в зависимости от Ваших потребностей.
В целом это не возможно в Make-файлах, потому что определить что цели сделать и в какой порядок, make
потребности знать их зависимости заранее перед правилами выполняются.
В Вашем примере, как был бы make
знайте, когда оценить $(MAP_FILES)
в work_with_map_files
правило? Порядок явно не определен, но выведен из зависимостей. В Вашем примере Вы хотите, чтобы это было оценено после generate_map_files
правило выполнялось, но нет никакого пути к make
знать что, потому что этому нужно для знания значения этой переменной для зависимостей, которые необходимы для определения порядка, в котором это значение было бы оценено - который является самосправочным циклом.
Один простой прием должен был бы, конечно, работать, делают дважды - можно было сделать это автоматически путем добавления a make work_with_map_files
команда после ./mapbuilder
команда в generate_map_files
шаблон, но быть осторожным с этим в целом, потому что, если work_with_map_files
как на самом деле объявляли бы, зависел бы от generate_map_files
(который это должно), это привести к рекурсивному большому количеству make
цикл. И конечно это побеждает идею make
автоматически определение порядка. Еще Вам был бы нужен a make
замена, которой можно подсказать на таких заказах и сделать несколько передач.
Это - причина, которые в больших кодовых базах с несколькими включают файлы, где каждый не хочет повторять включать зависимости в Makefile
, makedepend
часто используется для генерации отдельного Make-файла с теми зависимостями, который включен в основном Makefile
. Создавать тот затем работает сначала make depend
который звонит makedepend
генерировать включать зависимости от файла, и затем make
.