Lo mejor de mi timeline del 24 al 30 de agosto

Leer más » 1 Comentario

wp_kses() o cómo limpiar cadenas HTML en WordPress para evitar ataques XSS

Cuando desarrollo plugins y themes para WordPress en CODECTION siempre procuro mirar por la seguridad, “sanitizando” variables tanto para evitar ataques vía inyección SQL como para evitar ataques XSS. Es muy frecuente, que si recibes peticiones y luego las devuelves por pantalla, las variables que manejes, si las maneja el usuario de alguna manera, puedan terminar siendo el origen de una ataque XSS.

Algo tan sencillo como pasar una etiqueta script o iframe en un sitio conveniente y además de un ataque XSS, eres una fuente de phising para el resto de la red. Por fortuna, WordPress facilita mucho la vida al desarrollador al respecto y para evitar este tipo de ataques nos ofrece una función que además es extensible en su funcionamiento vía parámetros.

La función en cuestión es wp_kses() y aunque es similar a strip_tags(), una función nativa de PHP, suele recomendarse para cuestiones de seguridad.

wp_kses-vs-strip_tags

¿Para qué usamos wp_kses?

Básicamente deciros que sirve para limpiar una cadena de elementos HTML indeseados (imaginad otros usos que no sea el de seguridad, se me viene a la cabeza un uso de “limpieza” de una cadena proveniente de Microsft Word o LibreOffice Write).

Tiene esta forma:

wp_kses($string, $allowed_html, $allowed_protocols);

Y los parámetros que recibe indican exactamente:

  • $string: cadena a filtrar
  • $allowed_html: etiquetas HTML que se permitirán y que no se limpiaran
  • $allowed_protocols: protocolos permitidos, por defecto vienen unos pocos y siempre se asegura que no va a permitirse etiquetas ni invocaciones a ficheros JavaScript

La función devolverá el código HTML totalmente limpiado.

El segundo parámetro es interesante, porque podemos definir también qué atributos pasarán de cada etiqueta, un ejemplo curioso:

array(
    'a' => array(
        'href' => array(),
        'title' => array()
    ),
    'br' => array(),
    'em' => array(),
    'strong' => array(),
);

Ejemplo

El ejemplo es original de Simon Wheatly. Tenemos de entrada:

Wisi <a href=”#” style=”color: red;”>defui nunc</a> dignissim <strong class=”weird”>transverbero ideo vel</strong> utinam blandit, iaceo meus epulae enim amet nibh sed brevitas. Pala consequat <script type=”text/javascript” src=”http://example.com/certainly/do/not/want/this.js”></script> capio sino regula typicus <small>luptatum</small> olim ullamcorper uxor in verto.

Vamos a dejar sólo:

  • La etiqueta ‘a’ y sus atributos ‘href’, ‘title’ y ‘target’
  • Y las etiquetas ’em’ y ‘strong’ => array()

El código sería este:

$entrada = 'Wisi <a href="#" style="color: red;">defui nunc</a> dignissim <strong class="weird">transverbero ideo vel</strong> utinam blandit, iaceo meus epulae enim amet nibh sed brevitas. Pala consequat <script type="text/javascript" src="http://example.com/certainly/do/not/want/this.js"></script> capio sino regula typicus <small>luptatum</small> olim ullamcorper uxor in verto.'; $etiquetas_permitidas = array( 'a' => array( 'href' => array(), 'title' => array(), 'target' => array() ), 'em' => array(), 'strong' => array(), ); $salida= wp_kses( $entrada, $etiquetas_permitidas ); echo $salida; read more

Leer más » 1 Comentario

CSS

Leer más » 2 Comentarios

Lo mejor de mi RSS del 18 al 24 de agosto de 2014

La semana pasada estuve de vacaciones, así que ni pude leer apenas el RSS ni pude escribir esta entrada, por lo que no pude escribirla como de costumbre. Esta semana estoy de vuelta, así que ya va tocando este resumen de lo mejor de la red sobre temas relacionados con la tecnología libre:

La información almacenada en los discos duros es valiosa y por su propia tecnología, ya sea rígido o de estado sólido, todos son susceptibles de tener problemas de pérdida de datos: Reparar sectores y recuperar un disco duro (HDD) en Linux – Desde Linux Porque a muchos de vosotros os gustará tener un blog, no está mal aprender a monetizarlo: Convierte tu blog en un activo digital que vale miles de euros – Marketing de guerrilla Una gran herramienta para escanear la seguridad de los WordPress (que existan herramientas de este tipo es una diferencia importante y a favor de WordPress respecto a otros sistemas como Drupal o Joomla!):

WPScan, una magnífica herramienta de seguridad para auditar WordPress – Blog de David Rabáez read more

Leer más » 1 Comentario

Diseño y usabilidad por bandera: elementary OS

elementaryos

Si te gusta la filosofía Apple con espíritu Linux debes de echarle un vistazo al sistema operativo elementary OS.

Basada en Ubuntu, elementary OS hace uso de su propio shell denominado Pantheon en el cual se integran aplicaciones como Plank (un Dock clásico al estilo Mac OS), Midori (el navegador web por defecto) o Scratch (un editor de textos). Esta distribución usa Gala como gestor de ventanas, el cual está basado en Mutter.

Enlace: elementary OS.

Leer más » 4 Comentarios

Mar

Leer más » 2 Comentarios

[WordPress] Eliminar el SLUG de la URL de un Custom Post Type CPT

slug-wordpress_linux_hispano

En ocasiones deseamos modificar el permalink de un CPT eliminando el slug que WordPress nos coloca por defecto (el del mismo CPT), sin perder la forma de listar (loop) o de acceder a cada entrada (single).

Bien, la forma más directa de hacerlo es editando el archivo function.php de vuestro theme, también creando un plugin o invocando el código desde el functions.php a través de otro fichero. Para evitar entrar en qué forma es más correcta, simplemente atenderemos a la primera por comodidad. Así, editamos el fichero functions.php  Por cierto, la estructura en los permalinks (Ajustes->Enlaces permanentes) debe de ser /%postname%/. read more

Leer más » 2 Comentarios

Prestado

Leer más » 2 Comentarios

Lo mejor de mi RSS del 4 al 10 de agosto de 2014

Mitad de agosto y el ritmo baja pero no para. En CODECTION vamos a estar una semana desconectados y aquí en Linux Hispano no quiero dejar de publicar esta entrega semanal para mantener un mínimo de publicaciones.

  • Los sistemas de control de versiones son básicos para todos los desarrolladores que trabajan en equipo y que quieren tener su código ordenado, para facilitar la vida cuando estás en preproducción nada mejor que leer esta entrada: Usando git en (pre)producción – Bi0[x]iD’s WaY oF LiFe
  • WordPress es el CMS más popular y eso es beneficioso en multitud de aspectos, uno de ellos es que desarrolladores de multitud de grandes equipos como el Google Security Team estén al tanto buscando bugs de seguridad para solucionarlos, una nueva versión de seguridad: WordPress 3.9.2 Security Release – WordPress News
  • Que Linux sea software libre es garantía de diversidad, un ejemplo: Ubuntu CE: Una distribución para religiosos – Desde Linux
  • read more

    Leer más » 1 Comentario

    WordCamp Europa 2014 este año en Sofía (Bulgaria)

    Como todos sabréis, mi vinculación con el mundo y la comunidad WordPress es dilatada en el tiempo y cada día más profunda. Desde mis tiempos escribiendo este libro, a mi día a día hoy con CODECTION y todos los desarrollos que hacemos usando WordPress; pasando por mis charlas en las WordCamp o mi colaboración en la organización de la Meetup de Córdoba.

    Por eso mismo desde aquí os invito a todos los que podáis asistir a que no os perdáis uno de los eventos más importantes del año a nivel mundial y el más importante de este continente, Europa; para los amantes y profesionales de WordPress. read more

    Leer más » 1 Comentario