将nonce添加到<script>标记

时间:2018-04-24 12:44:28

标签: php wordpress nonce

我想知道如何在页面上基于WordPress将nonce添加到我的所有&lt; script&gt; 标签。例如,请在下面找到一些代码:

&#xA;&#xA;
  $ my_nonce = wp_create_nonce('nonce  - '。rand());&#xA; $ nonces =“Content -Security-Policy:script-src'self nonce  - “。$ my_nonce。”'“;&#xA; header(”{$ nonces}“);&#xA;&#xA; wp_localize_script('my_loadmore',' my_loadmore_params',array(&#xA;'ajaxurl'=&gt; site_url()。'\ / wp-admin \ /admin-ajax.php',&#xA;'posts'=&gt; json_encode($ wp_query-&gt ; query_vars),&#xA;'current_page'=&gt; get_query_var('paged')?get_query_var('paged'):1,&#xA;'max_page'=&gt; $ wp_query-&gt; max_num_pages,&#xA ;));`&#xA;  
&#xA;&#xA;

我想要这样的东西:

&#xA;&#xA; < pre> &lt; script nonce =“nonce-value”&gt; ...&lt; / script&gt;&#xA; &#xA;&#xA;

Where < strong> nonce-value 是随机的。

&#xA;&#xA;

这是我需要的地方之一,是否有任何想法如何将其全局添加到&lt; script&gt; 标签?

&#XA;

3 个答案:

答案 0 :(得分:0)

Haven未对此进行测试,但Wordpress确实提供了script_loader_tag过滤器,允许您从排队的脚本中修改生成的脚本标记。

add_filter( 'script_loader_tag', 'add_nonce_to_script', 10, 3 );

function add_nonce_to_script( $tag, $handle, $src ) {
    global $my_nonce;
    return '<script type="text/javascript" src="' . esc_url( $src ) . '" nonce="' . esc_attr( $my_nonce ) . '"></script>';
}

答案 1 :(得分:0)

试试这段代码,

add_filter('script_loader_src','add_nonce_to_script',10,2);
function add_nonce_to_script($src, $handle){
   $my_nonce = wp_create_nonce('nonce-'.rand());
   return $src.' nonce= '.$my_nonce;
}

希望这会对你有所帮助。 更多示例,

Adding Additional Attributes in Script Tag

答案 2 :(得分:0)

我在functions.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;
}

此解决方案会将随机数添加到所有正确注册的脚本中。