¿Cuál es la mejor práctica para escapar de los URI de datos?

4

Generalmente, usaría esc_url() para escapar de una URL antes de mostrarla. Si esa 'URL' es un URI de datos (por ejemplo, 'data:image/svg+xml;base64,...' ), se recortará en blanco por esc_url() .

La página del Codex en Validación de datos tiene esto que decir sobre las URL de escape:

  

Siempre use esc_url cuando desinfecte las URL (en nodos de texto, nodos de atributos o en cualquier otro lugar). Rechaza las URL que no tienen uno de los protocolos incluidos en la lista blanca (predeterminados a http, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed y telnet), elimina los caracteres no válidos y elimina los caracteres peligrosos. Reemplaza a clean_url () que quedó en desuso en 3.0.

Los URI de datos no están cubiertos por esta función y no parecen estar cubiertos por ninguna de las otras funciones de escape de WP estándar.

¿Existe una mejor práctica establecida en WordPress para escapar de los URI de datos?

    
pregunta Tim Malone 08.11.2016 - 23:24

2 respuestas

3

Es posible pasar una matriz con los protocolos permitidos a la función esc_url () . Para las URL de datos, debe contener el esquema data , ya que no está incluido en la lista wp_allowed_protocols () por defecto.

esc_url( $data_url, array( 'data' ) );
    
respondido por el JHoffmann 08.11.2016 - 23:48
1

Un UR de datos I no es del todo un l , pero es un atributo. Use esc_attr para escapar de los atributos, y esc_html en otros lugares. La clave es que escapar indica lo que estás esperando. Si está esperando un url, use esc_url , si es un atributo use esc_attr , si es texto sin html, use esc_html , etc. etc.

esc_url hará lo mismo pero con algunas reglas adicionales, como hacer cumplir un protocolo al principio, etc.

    
respondido por el Tom J Nowell 08.11.2016 - 23:45

Lea otras preguntas en las etiquetas