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.
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.

Evaluación EXCELENTE
A base de 7 reseñas
Contactamos con Iñigo para el diseño web de nuestra tienda online y estamos encantados. Su asesoramiento, seguimiento y trato han sido excepcionales. Un verdadero crack. Recomendado al 100%. No dudes en ponerte en contacto con el.
erlantz rique
erlantz rique
19/02/2024
Un acierto quien elija a Iñigo. Autentico profesional, se preocupó en todo momento que entendiera el funcionamiento de la web. Me explicó todo las veces necesarias hasta entenderlo. Se preocupó y acertó en que la web tuviera lo que le pedí y lo hizo con creces. Muy contento con el servicio prestado. Una vez realizado el trabajo, cualquier duda que tengo me sigue ayudando. Lo recomiendo sin temor a equivocarme.
Jose Marlasca
Jose Marlasca
06/02/2024
Dió en la clave y nos dió los instrumentos que necesitábamos en esos momentos, y sobre todo entendió a la perfección lo que buscábamos. Lo mejor de web que hemos tenido en 24 años. Eskerrik asko Mezo!!
Troka Abentura
Troka Abentura
07/01/2024
Compromiso, implicación e innovación en los proyectos. Atento a las necesidades e incansable en la búsqueda de soluciones. Muy buena opción.
Jabier Fuertes Udaondo
Jabier Fuertes Udaondo
07/01/2024
Si buscas a alguien que además de hacer un diseño web moderno, responsivo y adaptado a tu sector, te explique por qué plantea el diseño web de esa manera y que te explique y ayude en posicionar tu web lo mejor posible en base a los objetivos fijados, ese es Iñigo Mezo y os lo recomiendo al 100%
Asier Hermoso
Asier Hermoso
03/01/2024
Genial trabajar con él! Además de ser muy buen profesional, experto y responsable, a destacar tanto su implicación en cada proyecto, así como su trato siempre cercano y su paciencia infinita ;) Un crack!!
itxaso zubia
itxaso zubia
15/12/2023
El plugin gratuito para integrar productos de Prestashop en Wordpress muy sencillo de utilizar y muy bien documentado, os felicito.
Fernando Cózar
Fernando Cózar
02/11/2023