Desarrollo con seguridad en WordPress

Home » Blog » Desarrollo con seguridad en WordPress

A la hora de desarrollar un plugin o un tema, es importante garantizar la seguridad ante un posible ataque. El core de WordPress nos ofrece herramientas para desarrollar con seguridad nuestros temas y plugins.

Posibles problemas

Los formularios y URLS son los recursos más usados por los hackers para colarse en nuestra web.

  • Nos llenen la base de datos de información.
  • Nos hagan cientos de peticiones sobrecargando el servidor.
  • Puedan añadir un perfil administrador sin nuestro consentimiento.
  • Pueden modificar el contenido.
  • Pueden borrar la base de datos entera.

Controlar él envió de formularios y las URLS mediante NONCE

WordPress añade los NONCE para proteger las urls y él envió de formularios.  Lo que hacen es impedir el acceso no autorizado mediante la generación de una clave secreta antes de enviarse la solicitud. Y comprueba antes de procesar la información sea la misma.

Para comprobar que una URL ésta correctamente enviada usamos en la creación:

wp_nonce_url

wp_nonce_url( $mi_url, 'borrar-_'.$post->ID );
//genera una url con el nonce
<a href="<?php echo wp_nonce_url( $mi_url, 'borrar-_'.$post->ID );?>">

Este código genera una cadena _wpnonce en la url. Y para comprobar su envió antes de la acción usamos:

check_admin_referer('borrar-_'.$post->ID);

Y para añadir un nonce en un formulario usamos dentro del formulario:

wp_nonce_field

<form>
<input name=”nombre”>
<?php wp_nonce_field('mi_nonce_action','mi_nonce_field'); ?>
</form>
//oculta el nonce como input

Y en la página de recepción del formulario podemos comprobar que se ha enviado correctamente:

check_admin_referer(‘mi_nonce_action’, 'mi_nonce_field');
//comprueba el envió de la url

Controlar el guardado en la base de datos

Por otro lado, otro ataque típico, es usar los propios cajones de entrada de datos, para introducir códigos que puedan alterar nuestra base de datos, o provocar errores en nuestra plataforma. Imagina si alguien en vez de poner su nombre pone código de programación, que puede suceder? y eso es lo que hay que controlar, para lo que dependiendo del tipo de dato hay una función de WordPress:

Antes de guardar debemos pasar los datos por las funciones:

  • sanitize_email() => Elimina caracteres que no deban ir en un mail, ejemplo acentos los quita
  • sanitize_text_field() => Elimina html convirtiendo la variable en caracteres inofensivos
  • sanitize_file_name()
  • sanitize_html_class()
  • sanitize_key()
  • sanitize_meta()
  • sanitize_mime_type()
  • sanitize_option()
  • sanitize_sql_orderby()
  • sanitize_title()
  • sanitize_title_for_query()
  • sanitize_title_with_dashes()
  • sanitize_user()
$nombre= sanitize_text_field( $_POST['nombre'] );
//luego guardamos en BD

Y para mostrar la información por pantalla:

  • esc_html() => Escapar datos que tienen HTML
  • esc_url() => Escapar urls
  • esc_js() => Escapar js
  • esc_attr() => Se usa para escapar elementos que tengan que ir dentro de html, por ejemplo etiquetas class, value, etc.
  • esc_textarea() => Escapar textarea
$html = esc_html( '<a href="https://imacreste.com/">Enlace</a>' );
//se visualizaría asi: &lt;a href=&quot;https://imacreste.com/&quot;&gt;Enlace&lt;/a&gt;

Otras medidas para asegurar él envió de información

  • El prefijo de la base de datos debe ser distinto al que viene por defecto.
  • Podemos incluir un captcha para evitar intentos de fuerza bruta, es decir que una maquina éste intentando meternos algo sin una acción humana.
  • Instalar plugins de seguridad que nos avisen de tareas sospechosas.
  • NUNCA, NUNCA des por hecho que los usuarios usarán las cosas como deben.

Categorías


Foto de Iñigo Mezo Alvarez

IÑIGO MEZO ALVAREZ (IMAcreste)


Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Las reseñas son opiniones que las personas dejan en la página local de Google. Si son positivas, estas reseñas ayudarán a mejorar la confianza y credibilidad de una marca.

Participa en nuestro sorteo enviando un email con tu nombre y el asunto «Sorteo AUDITORÍA SEO». Se realizara un sorteo cada mes.