Validación segura de wp_editor en Opciones de tema

3

Encontré este gran subproceso WPSE sobre seguridad para temas / complementos . Respondió a la mayoría de mis preguntas, pero se creó antes de que se creara la nueva función wp_editor() .

Tengo dos editores TinyMCE en mis Opciones de tema y me pregunto si necesito usar esc_html() o esc_textarea() en una devolución de llamada de validación antes de guardar la opción del tema. Me parece que TinyMCE se encarga de muchas cosas (así como de la seguridad de la API de configuración que se cuida), pero todavía no hay mucha documentación sobre wp_editor() .

Se agradece cualquier recurso y respuesta.

    
pregunta mrwweb 10.05.2012 - 06:25

2 respuestas

9

esc_html() y esc_textarea() son, apropiados para sus nombres, funciones de escape y realmente destinados a la visualización en lugar de desinfectar o validar. Yo usaría wp_kses() o wp_kses_post() (que es solo wp_kses() con el $allowedposttags global) para sanear la entrada de un campo wp_editor() antes de guardar.

    
respondido por el helenhousandi 10.05.2012 - 07:31
6

El TinyMCE tiene un filtro para todas las etiquetas permitidas. Puede cambiar las etiquetas, las opciones están establecidas de forma estándar y el editor las filtra. No es necesario que filtre después de guardar.

Ejemplo para etiquetas mejoradas:

function fb_change_mce_options( $initArray ) {
    // Comma separated string od extendes tags
    // Command separated string of extended elements
    $ext = 'pre[id|name|class|style],iframe[align|longdesc|name|width|height|frameborder|scrolling|marginheight|marginwidth|src]';
    if ( isset( $initArray['extended_valid_elements'] ) ) {
        $initArray['extended_valid_elements'] .= ',' . $ext;
    } else {
        $initArray['extended_valid_elements'] = $ext;
    }
    // set tiny paramter verify_html
    $initArray['verify_html'] = true;
    return $initArray;
}
add_filter( 'tiny_mce_before_init', 'fb_change_mce_options' );

También puede filtrar las etiquetas, todas las etiquetas dentro de la matriz $initArray están permitidas. Es fácil matar las etiquetas de la matriz. unset( $initArray['pre'] )

lee los elementos dentro de la matriz a través de var_dump( $initArray );

Mejor

    
respondido por el bueltge 10.05.2012 - 07:38

Lea otras preguntas en las etiquetas