Автоматическое добавление скриптов темы в CSP

Мы часто видим темы поддержки от людей, пытающихся добавить внешние ссылки на JavaScript в свои темы. По умолчанию политика безопасности контента (CSP) блокирует это, и администратор должен вручную добавить скрипт в настройку сайта CSP (или в настройку/модификатор темы).

Однако @Johani предложил отличное решение, как мы можем улучшить это.

Вместо того чтобы просить разработчиков тем копировать и вставлять элементы по всему интерфейсу администратора, мы можем сделать это автоматически. Мы можем проанализировать весь HTML в теме, извлечь атрибут src любых внешних скриптов и добавить их в CSP.

В конце концов, компьютеры гораздо лучше справляются с повторяющимися операциями копирования и вставки, чем люди!

Я открыл PR, реализующий это:

Я вижу некоторые ошибки в консоли локально:

image

В производственных средах я также вижу источники, добавленные в формате https://CDN_SERVER/theme-javascripts/31657759d037d8c06397e9965a1113169100846e.js..., что избыточно, поскольку политика уже разрешает https://CDN_SERVER/theme-javascripts. Возможно, стоит ограничить автоматическое расширение только внешними источниками скриптов?

Спасибо, @pmusaraj! Я добавил несколько дополнительных проверок, чтобы убедиться, что в CSP не передаются недопустимые URL, а также исключил URL-адреса theme-javascript:

Это круто. @merefield, разве это не супер?