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

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

[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

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

    Lo mejor de mi RSS del 28 de julio al 3 de agosto de 2014

    Llegó agosto, y aunque está siendo extremadamente fresco para lo que suele ser en el valle de Guadalquivir en Andalucía, sí que se nota que al menos en el interior, en Córdoba, las calles están más vacías, hay más gente de vacaciones y menos actividad en general.

    Nosotros, mientras podamos, seguiremos ofreciendo este resumen semanal de enlaces para amenizaros la lectura del domingo tarde y recomendaros contenido de calidad en la blogosfera hispana linuxera y relacionada con tecnologías libres como esa que tanto nos gusta que es WordPress. read more

    Leer más » 1 Comentario

    Lo mejor de mi timeline del 13 al 19 de julio

    Leer más » 1 Comentario

    Aumentar memoria en WordPress para evitar Fatal error: Allowed memory size of N bytes exhausted

    Si manejáis WordPress a diario seguro que alguna vez habréis sufrido un error de falta de memoria RAM, que se traduce en un mensaje de este tipo:

    Fatal error: Allowed memory size of N bytes exhausted

    Como sabréis, PHP es un lenguaje del lado del servidor, que se interpreta (no se compila) y que en cada ejecución necesita una no despreciable cantidad de memoria para poder ejecutarse. Si usamos un sistema gestor de contenidos como WordPress y encima usamos cantidad de plugins y un theme que sea algo pesado, es muy posible que una ejecución necesite del orden de 64MB de RAM hacia arriba (he visto necesidades de más de 128 MB de RAM para ciertas operaciones). read more

    Leer más » 2 Comentarios

    Lo mejor de mi RSS del 23 al 29 de junio de 2014

    Ya estamos en verano y más de uno estará disfrutando de unas merecidas vacaciones. Nosotros todavía no y por eso mismo aunque siga hasta arriba con otros temas, saco un rato cada semana para comentaros qué es lo mejor que he leído en la red a lo largo de la misma:

    Es posible que quieras representar pequeños mapas en tu sitio y no quieras tener que buscar una API y usarla, por eso mismo hay soluciones de este tipo: Crea pequeños mapas del mundo sin emplear ninguna API – Kabytes Ganarte la vida desarrollando es un placer, más aún cuando eres un aficionado a la programación desde hace muchos años, por eso mismo os traigo esta entrada con experiencias propias sobre el tema: Plugins WordPress: de la consultoría al modelo de negocio escalable sin dejar de lado el software libre – Blog de CODECTION Es curioso, equipos con Lubuntu o Xubuntu tardan en arrancar y no sabes bien por qué, te pones a mirar y te das cuentas que tienes instalado servicios de todo tipo (servidores, bases de datos…) una buena forma de verlo todo de una vez esta:

    Administrando los servicios que se inician en nuestro ordenador con rcconf – Desde Linux read more

    Leer más » 1 Comentario