Я создаю строгий CSP для моего сайта Wordpress.
У меня установлены Gravity Forms, и я вижу, что он создает некоторые встроенные javascript. Я хочу добавить одноразовые значения в эти сценарии. То, что у меня есть ниже, добавит значение nonce ко всем скриптам, которые зарегистрированы в Wordpress надлежащим образом.
Вот как я этого добился.
Я настраиваю функцию в функциях. php для генерации одноразового номера с использованием встроенной функции Wordpress.
add_action( 'run_custom_nonce_value', 'custom_nonce_value' );
function custom_nonce_value () {
$created_nonce = wp_create_nonce();
define( 'NONCE_RANDVALUE', $created_nonce );
}
Затем я настраиваю этот фильтр для добавления значения одноразового номера ко всем сценариям
add_filter( 'script_loader_tag', 'add_nonce_to_script', 10, 3 );
function add_nonce_to_script( $tag, $handle, $source ) {
custom_nonce_value();
$val_nonce = NONCE_RANDVALUE;
$search = "type='text/javascript'";
$replace = "type='text/javascript' nonce='".$val_nonce."' ";
$subject = $tag;
$output = str_replace($search, $replace, $subject);
return $output;
}
Это решение будет добавить одноразовые номера во все правильно зарегистрированные сценарии в Wordpress.
Как добавить одноразовые атрибуты в встроенные сценарии, которые Gravity Forms внедряет в страницу? Я не думаю, что эти скрипты зарегистрированы правильно.