Como desarrollador, una de las cosas más importantes que debes hacer es impedir el acceso directo a tu plugin.
Me refiero a que si alguien trata de acceder directamente a alguno de los archivos localizados en cualquier directorio del plugin no pueda ejecutar ningún código del script.
Si no haces lo posible para evitar el acceso directo a tu plugin estás creando una vulnerabilidad de seguridad, máxime cuando es algo realmente fácil de evitar.
Debes ser concienzudo con la seguridad, por tu reputación como programador, por supuesto, pero sobre todo por la seguridad de tus usuarios.
Y sí, es muy fácil, pero también es igual de cierto que muchos de los plugins más utilizados no suelen hacer, y es imperdonable.
Cómo evitar el acceso directo a tu plugin
Lo primero es tener claro porqué no debemos dejar que otros accedan directamente al código de tu plugin.
Dicho en pocas palabras, si consiguen acceder a los scripts entonces podrán ejecutar determinadas partes del código que estén, o fuera de la API de WordPress, o que no comprueben si el usuario tiene permisos para ejecutar una parte del código.
Una vez consigue hacer esto todo el sitio queda comprometido.
Y sí, da miedito, pero no hay que sofocarse, asegurarse de que un usuario con malas intenciones no pueda conseguir acceso al archivo principal de tu plugin es tan sencillo como cerciorarte de que en las primeras líneas de tu plugin (justo debajo de la cabecera de tu plugin) tengas algo como esto:
<?php // Si se hace una llamada directa al plugin, abortar. if ( ! defined( 'WPINC' ) ) { die; }
También debes tomar otras precauciones:
- Puedes definir permisos para especificar qué perfiles de usuario pueden ver el contenido de un directorio del servidor.
- También puedes poner un archivo vacío
index.php
en todos los directorios de tu plugin, para provocar una pantalla en blanco si alguien trata de explorarlos. - También es útil asegurarte de que el resto de tus funciones comprueben correctamente los valores nonce, si un tipo de usuario puede ejecutar código, o si el usuario ha accedido a WordPress antes de poder ejecutar código.
Estos son algunos consejos simples y efectivos para evitar que alguien ejecute un plugin ejecutando rutinas habituales en la mayoría de los plugins WordPress.
Pero no son todos los posibles frenos, si sabes alguno más anímate a compartirlo, es responsabilidad de todos hacer que WordPress sea más seguro.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
También se recomienda if ( ! defined( ‘ABSPATH’ ) ) exit; como explican aquí: http://wordpress.stackexchange.com/questions/108418/what-are-the-differences-between-wpinc-and-abspath
Gracias por los excelentes consejos.
¿Sería efectivo en nuestro archivo de funciones? Lo digo porque muchas veces este contiene partes de plugins….
Muchísimas gracias por todos tus consejos! Sin tu blog no sería ni la mitad de profesional en mi trabajo.
De verdad, gracias!
Vaya, muchas gracias a ti por tomarte tu tiempo para decirlo 🙂