Existe algum filtro para desabilitar o carregamento especulativo no WP 6.8? Eu tentei:
apply_filters( 'wp_speculation_rules_configuration', null );
Mas o script ainda está presente. Obrigado por qualquer dica.
Existe algum filtro para desabilitar o carregamento especulativo no WP 6.8? Eu tentei:
apply_filters( 'wp_speculation_rules_configuration', null );
Mas o script ainda está presente. Obrigado por qualquer dica.
Atualmente eu tenho:
function add_csp_header() {
$csp = "script-src 'nonce-".custom_nonce_value()."'"; //and some more
header("X-Content-Type-Options: nosniff");
header("Referrer-Policy: strict-origin-when-cross-origin");
header("Content-Security-Policy: $csp");
}
add_action('send_headers', 'add_csp_header');
No console recebo várias mensagens de erro dizendo:
Content-Security-Policy: the settings of the page have blocked loading a ressource on inline ("script-src").
Os scripts embutidos são enfileirados wp_localize_script()
assim:
wp_register_script( 'dibujos', get_stylesheet_directory_uri() . '/js/dibujos.js', array('jquery'),'1.0.0', true);
wp_localize_script( 'dibujos', 'archVar', array( 'url' => get_bloginfo('url') ) );
wp_enqueue_script('dibujos');
Para adicionar nonces a scripts embutidos, tentei as seguintes abordagens:
function toa_inline_script_nonce( array $attr ): array {
if ( empty( $attr['id'] ) ) {
return $attr;
}
if ( 'dibujos' === $attr['id'] ) {
$attr['nonce'] = custom_nonce_value();
}
return $attr;
}
add_filter( 'wp_script_attributes', 'toa_inline_script_nonce', 10, 1 );
não faz nada, ou...
//nonce for specific scripts
function toa_script_tag_nonce( $tag, $handle ) {
if ( $handle === 'jquery' OR $handle === 'admin-bar' OR $handle === 'dibujos' ) {
$nonce = custom_nonce_value();
$tag = str_replace( '<script ', '<script nonce="'.$nonce.'"', $tag );
}
return $tag;
}
add_filter( 'script_loader_tag', 'toa_script_tag_nonce', 10, 2 );
Isso adiciona nonces para $handle
'jquery' e 'admin-bar', mas ignora 'dibujos'.
e por último...
add_filter( 'script_loader_tag', 'add_nonce_to_script_tag', 10, 3 );
function add_nonce_to_script_tag( $tag, $handle, $src ) {
// Check the $handle and respond accordingly
if ( $handle === 'dibujos' ) {
$nonce_value = custom_nonce_value();
$replace = sprintf("javascript' nonce='%s'>", $nonce_value );
$tag = str_replace( "javascript'>", $replace, $tag);
}
return $tag;
}
// Then... $data is the inline JS from wherever
wp_add_inline_script('dibujos', $data, 'before');
Isso gera erros: $data is undefined
e wp_add_inline_script()
não deve ser chamado antes de wp_enqueue_scripts()
. Conclusão: todas as minhas tentativas de capturar a tag de script e adicionar um atributo nonce falharam. De alguma forma, parece que os scripts embutidos estão fora de alcance... (pelo menos com essas abordagens)
Neste post alguém diz:
Como eles são ecoados e codificados, você não pode adicionar um atributo aos elementos de script HTML de wp_localize_script().
De acordo com esta declaração, os scripts inline são um beco sem saída para um CSP save script-src no wordpress. Apesar disso, gostaria de saber se esse é realmente o caso e, caso contrário, como posso adicionar nonces a todos os scripts embutidos?