Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

173
Vistas
CSP y localización de scripts en wordpress

Quiero usar correctamente la Política de seguridad de contenido en mi sitio de Wordpress, pero no los URI de código fijo.

Estoy moviendo todos mis scripts en línea a un archivo y agregando hashes a todas las etiquetas de script para usar con Subresource Integrity.

La localización ajax me hace pasar un mal rato; Ejecuta PHP para obtener el nombre del archivo JS y lo envía en línea a un objeto (que es utilizado por las llamadas ajax).

Para que admin-ajax esté disponible, tengo

 global $wp_query; wp_localize_script('project-js', 'ajax_object', array( 'ajaxurl' => admin_url('admin-ajax.php'), 'some_vars' => json_encode($wp_query->query) ));

Qué salidas:

 <script type="text/javascript" id="project-js-js-extra"> /* <![CDATA[ */ var ajax_object = {"ajaxurl":"http:\/\/domain.tld\/wp\/wp-admin\/admin-ajax.php","some_vars":"[]"}; /* ]]> */ </script>

Necesito poder agregar un hash a esta etiqueta, pero no puedo encontrar la forma correcta.

Puedo generarlo en PHP como:

 global $wp_scripts; $l10n_candidate = array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'some_vars' => json_encode( $wp_query->query ) ); $script_content = "/* <![CDATA[ */ var ajaxpagination = " . wp_json_encode( $l10n_candidate ) . '; /* ]]> */'; $script_hash = hash('sha256', $script_content);

Pero no sé cómo agregar esto a la página correctamente y, además, se siente demasiado raro.

Sin generar este hash o mover la creación de este objeto a mi archivo JavaScript principal, la página no pasará mi CSP y el script no se ejecutará.

¿Cómo logro esto?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

A partir de este momento, la única forma en que pude resolverlo es usando [wp_enqueue_scripts][1], que es el enlace que usa [wp_enqueue_script][2] cuando utiliza [wp_localize_script][3]

No parece la mejor solución, pero funciona.

 function abr_ajax_pagi_obj(){ global $wp_query; $l10n_candidate = array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'some_vars' => json_encode( $wp_query->query ), ); $script_content = "/* <![CDATA[ */ var ajaxpagination = " . wp_json_encode( $l10n_candidate ) . '; /* ]]> */'; $script_hash = 'sha256-' . base64_encode(hash('sha256', $script_content,true)); ?><script integrity="<?php echo $script_hash?>"><?php echo $script_content;?></script><?php } add_action( 'wp_enqueue_scripts', 'abr_ajax_pagi_obj', 5, 5 ); [1]: https://developer.wordpress.org/reference/hooks/wp_enqueue_scripts/ [2]: https://developer.wordpress.org/reference/functions/wp_enqueue_script/ [3]: https://developer.wordpress.org/reference/functions/wp_localize_script/
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda