Dieciséis consejos de seguridad para desarrolladores de plugins y temas de WordPress

Publicado: 2021-10-19

¡Uno nunca puede ser demasiado cuidadoso!

Una gran parte de nuestro trabajo como desarrolladores es asegurarnos de que los sitios y complementos que estamos construyendo sean seguros.

Las empresas necesitan soluciones más rápidas con una funcionalidad cada vez más compleja. Si bien este es un buen progreso, la construcción de proyectos complejos también exige una configuración de seguridad adecuada. La seguridad de WordPress es uno de los aspectos más importantes del desarrollo de un sitio web.

Con la creciente complejidad de las funciones, muchos desarrolladores se pierden los principios básicos de seguridad del desarrollo de sitios web y aplicaciones web. Esto da como resultado un sitio web defectuoso que está abierto a ciberataques y otros riesgos.

Por lo tanto, es esencial que implemente algunos protocolos básicos de seguridad de desarrollo de sitios web y aplicaciones web mientras construye su proyecto.
A continuación hay 16 consejos de seguridad para desarrolladores web que ayudarán a mantener su sitio sano y salvo.

1. Averigüe qué datos necesitan protección

Uno de los principios de seguridad de desarrollo de sitios web más cruciales es que solo necesita almacenar los datos necesarios.
Cuando estás desarrollando un proyecto, necesitas hacerte estas tres preguntas:

  • ¿Qué datos necesita almacenar la empresa?
  • ¿Qué datos confidenciales necesita cifrar la empresa?
  • Si, por algún motivo, los datos se ven comprometidos, ¿cuánto podría perjudicar a la empresa?

Cuantos más datos confidenciales almacene, mayor será el riesgo de exposición. Si debe almacenar los datos confidenciales, debe cifrarlos para que sea difícil acceder a ellos.

2. Implementar la gestión de funciones y el control de acceso

Al diseñar un sitio web, complemento o tema, es importante otorgar a los usuarios los privilegios más bajos posibles.

Los privilegios deben limitarse para que el usuario solo obtenga lo que necesita y no pueda acceder a otras áreas.

Por ejemplo, los colaboradores deben estar restringidos a poder crear nuevas publicaciones y páginas, pero no publicarlas. Los editores deben poder crear nuevas publicaciones y publicarlas, pero no pueden cambiar el diseño o los complementos.

Del mismo modo, mientras desarrolla una funcionalidad específica en su complemento o tema que desea restringir, asegúrese de crear nuevos roles de usuario de WordPress durante la instalación. Informe a los administradores sobre ellos, de modo que se asignen los roles correctos a los usuarios respectivos que utilizarán el complemento o el tema que está desarrollando.

Aquí hay una representación pictórica rápida de cómo se ve la estructura.

Estructura de gestión de roles y control de acceso

Este enfoque minimiza los problemas porque podemos limitar el daño que puede causar un intruso. También puede limitar el daño causado por errores o errores de un usuario curioso que juega en áreas de un sitio web en las que realmente no debería estar.

También debe restringir el acceso dentro del equipo de desarrollo según su función.

3. Aplicar autenticación

La autenticación de sitios web es el proceso de seguridad que permite a los usuarios verificar sus identidades para obtener acceso a áreas restringidas de un sitio web.

Mientras desarrolla un tema o complemento, tendrá ciertos datos que deben restringirse mientras que algunos datos son visibles para los usuarios. Por lo tanto, es importante que agregue verificaciones en el código para verificar si el usuario que accede a los datos restringidos está autenticado y tiene el rol de usuario correcto.

De manera similar, al crear un sitio web, puede implementar prácticas efectivas de administración de cuentas, como la aplicación segura de contraseñas y la autenticación multifactor para proteger los datos de los usuarios.

La autenticación de dos factores es una de las formas más populares de implementar la autenticación.

La autenticación de dos factores (2FA) es un proceso de dos pasos en el que necesita un código adicional o una contraseña de un solo uso (OTP) para iniciar sesión en su sitio además de la contraseña de su sitio web. Esta OTP generalmente se envía a otro dispositivo a través de un mensaje de texto, una llamada telefónica o una aplicación 2FA reconocida como Google Authenticator, Authy, Duo Security y muchas más. La implementación de 2FA lo mantiene a salvo de los ataques de fuerza bruta.

Si está creando su sitio web en WordPress, consulte estas increíbles herramientas que le permiten proteger su sitio web.

  • Limite los intentos de inicio de sesión: esta herramienta lo mantiene a salvo de los ataques de fuerza bruta al limitar la cantidad de intentos de inicio de sesión. También incluye antispam y cierre de sesión de usuario inactivo automatizado.
  • WP2 FA: el complemento WP2FA le permite agregar autenticación de dos factores a su sitio web en un instante. También es compatible con múltiples aplicaciones 2FA como Google Authenticator, Authy, FreeOTP, Duo Security y muchas otras.
  • Shield Security: este complemento no admite aplicaciones 2FA como Google Authenticator y SMS 2FA, sin embargo, es útil para aquellos que usan YubiKey.
  • WPassword: este complemento lo ayuda a aplicar contraseñas seguras para su sitio web de WordPress, bloquear usuarios con demasiados intentos de inicio de sesión fallidos y más. Se integra a la perfección con WooCommerce y otros complementos de terceros.

4. Verifique su tema o complemento antes de lanzarlo

Antes de que se lance un tema o un complemento, debe asegurarse de que su código esté lo más libre de errores posible. Puede usar ciertas dependencias del compositor para detectar cualquier vulnerabilidad en su código.

Algunas de las dependencias recomendadas para los sitios web de WordPress son:

  • Wpthemereview
  • Wp-codificación-estándares

Estos estándares de codificación tienen reglas de codificación estrictas, como escapar siempre de los datos antes de imprimirlos, usar nonce para todas las solicitudes, desinfectar los datos de las solicitudes antes de usarlos, proporcionar los permisos de usuario adecuados y más para ayudar a proteger su código.

Estas herramientas son excelentes si está desarrollando su propio tema o complemento.

También debe consultar WPScan Security Scanner. Es un excelente escáner de seguridad de sitios web en línea que verifica su sitio web en busca de vulnerabilidades.

5. Evite ciertas funciones de PHP

Ciertas funciones de PHP como eval() y unserialize() pueden exponer los datos del sistema y pueden conducir a la exposición de los datos del servidor, lo que puede causar el cierre del servidor o el acceso a toda la información del servidor del hacker.

Aquí hay algunas funciones de PHP que debe evitar cuando sea posible:

eval() : eval puede ejecutar código PHP arbitrario. Podría exponer sus códigos a ataques de inyección si no se usa correctamente.

serialize() o unserialize(): no use serialize() o unserialize() con entradas proporcionadas por el usuario. Los atacantes pueden explotar estas funciones. Pueden pasar una cadena con un objeto arbitrario serializado para ejecutar código arbitrario.

md5() : Internet está lleno de reseñas sobre las debilidades criptográficas de md5() 1 y se considera inseguro. Utilice una mejor función hash, como SHA-2.

sha1() : sha1() es otra función hash que no debe usarse debido a la naturaleza rápida de los algoritmos hash. Se recomienda utilizar el algoritmo hash SHA-2 en lugar de md5() en cualquier marco moderno.

6. Use linters para encontrar problemas en el código

Una herramienta de pelusa es un analizador de código estático básico que verifica su código fuente en busca de errores programáticos y estilísticos. El tono de voz de salida de Linter debe ser amigable para que el proyecto siga avanzando.

Los códigos Lint son una excelente manera de encontrar vulnerabilidades potenciales y reducir los errores al desarrollar un sitio web o una aplicación. Puede usar ciertos filtros de seguridad para el desarrollo de PHP, JS y HTML.

Aquí hay algunas herramientas notables para el análisis estático de sus códigos PHP:

  • PHP-Parallel-Lint
  • SonarLint
  • Salmo
  • Pelusa de PHP

También puede usar SonarLint para HTML y Javascript.

Otros linters JS dignos de mención son:

  • Pelusa JS
  • Pelusa ES

7. Elimine el código y los complementos no utilizados

Con un software cada vez más complejo, también aumenta el potencial de vulnerabilidades en el código. Los temas y complementos de WordPress no son diferentes. Las características cada vez mayores de códigos como HTML5, CSS y JavaScript permiten a los desarrolladores crear aplicaciones web enriquecidas.

Sin embargo, la creciente complejidad de las aplicaciones es un arma de doble filo. Si bien ayudan a brindar las características que los usuarios esperan, también amplían la superficie de ataque de la aplicación. Una medida para hacer frente a dicha vulnerabilidad es eliminar el código que no se utiliza.

Es posible que diferentes usuarios no necesiten todas las funciones de un sitio web o una aplicación web. Al eliminar funciones innecesarias según los requisitos del usuario en cada implementación, puede reducir las superficies de ataque y el riesgo asociado.

Si le encanta desarrollar sitios web en WordPress, le recomendamos que opte por temas y complementos que satisfagan sus necesidades y que sean livianos en términos de su código. No solo mantienen su sitio web seguro, sino que también ayudan con la optimización del motor de búsqueda. Estos son algunos de los mejores temas de WordPress ligeros y rápidos disponibles.

8. Utilice la validación del lado del servidor y del lado del cliente

Si eres alguien a quien le encanta escribir códigos personalizados, es esencial utilizar la validación tanto del lado del cliente como del lado del servidor. La validación del lado del cliente ayuda a evitar que el usuario cometa errores comunes, como ingresar datos incorrectamente u olvidar campos. Dicha validación detecta los datos no válidos antes de que lleguen al servidor, lo que ahorra tiempo y dinero.

Imagínese, si la validación del lado del cliente solo ocurre después de que falla un viaje de ida y vuelta al servidor, enfrentará demoras para decirles a los usuarios qué hicieron mal sin permitirles corregir sus errores de inmediato.

Sin embargo, la validación del lado del cliente por sí sola no es suficiente como medida de seguridad. También necesita usar la validación del lado del servidor. La validación del lado del servidor lo protege de entradas maliciosas y otros vectores de ataque.

9. Desinfecte cualquier entrada de usuario y solicite datos

User Input Sanitization es una medida de seguridad cibernética de auditoría, limpieza y filtrado de datos de usuarios y API de cualquier carácter y cadenas no autorizados o no deseados para evitar la inyección de código dañino en el sistema.

Los piratas informáticos pueden inyectar comandos específicos y ejecutar acciones que pueden comprometer la seguridad de su sitio web. La sanitización de entrada ayuda a mantener la integridad de los datos y mejora la seguridad del sistema.

10. Aplicar arreglos permanentes

Mientras realiza una verificación de seguridad, es posible que observe algunas vulnerabilidades que vuelven a aparecer de vez en cuando. Debe determinar la causa raíz de las nuevas vulnerabilidades para poder erradicarlas de forma permanente en lugar de agregar un parche parcial.

Por ejemplo, muy a menudo puede encontrarse con problemas de SQL/XSS en el tema o complemento que desarrolla. En tal caso, en lugar de crear una verificación de saneamiento para cada entrada, cree una función/clase y establezca una política que siempre que haya una entrada del usuario, todos los datos deben pasar a través de esta clase/función.

11. Evite las malas configuraciones y los valores predeterminados de seguridad

Las configuraciones de seguridad incorrectas ocurren cuando la configuración de seguridad no está definida e implementada y se mantienen los valores predeterminados. No implementar controles de seguridad o implementarlos con errores puede aumentar la probabilidad de tener vulnerabilidades en el tema, complemento o sitio web que crea.

La configuración incorrecta a menudo ocurre porque un sistema, administrador de base de datos o desarrollador no configuró correctamente el marco de trabajo de una aplicación, lo que genera vías abiertas peligrosas para los piratas informáticos.

Asegúrese de que la configuración predeterminada sea segura y no establezca contraseñas automáticamente (si es necesario). Por ejemplo, si el complemento usa un directorio donde los usuarios pueden cargar archivos, siempre solicite a los usuarios que configuren sus contraseñas y la ruta del directorio.

12. Mantente informado y actualizado

La ciberseguridad es un campo en constante evolución. Debe estar al tanto de las últimas actualizaciones de seguridad y los riesgos emergentes para poder mantenerse al día con los desarrollos y mitigar las amenazas nuevas y emergentes en su código.

Como desarrollador, es útil mantenerse informado sobre las noticias y escribir un código más seguro, cuáles son las mejores prácticas para asegurar la codificación, desinfectar mejor el código y manejar mejor la entrada del usuario.

Para hacer esto, siga a los expertos en línea y manténgase actualizado con su blog de desarrollo web favorito. Ya estás leyendo este. Así que has tenido un buen comienzo.

Estos son algunos de los mejores recursos sobre la seguridad de WordPress.

  • Blog de seguridad blanca de WP
  • Blog de WordFence
  • Blog Sucurí

13. Mantener el código

El código que escriba hoy podría no ser seguro mañana. Siguen apareciendo nuevas variantes de vulnerabilidad y también necesita actualizaciones constantes por parte del desarrollador.

A medida que agregue nuevas funcionalidades a un complemento o tema, verifique que no afecte la seguridad de otros módulos o clases, o funciones en el código. En caso de que lo hagan, debe actualizar el código para corregir los problemas.

También puede usar herramientas como GitHub para mantener el código de su tema o complemento. Le ayudará a rastrear el código y solucionar problemas más rápido. La seguridad siempre evoluciona. Para mantenerse al día con las últimas tendencias, es fundamental renovar constantemente sus pruebas de seguridad para que pueda encontrar vulnerabilidades y mejorarlas.

14. Actualice sus paquetes de software regularmente

Es una obviedad.

Mantener sus paquetes de software como PHP, Javascript, HTML y otros actualizados ayuda a abordar nuevos problemas de seguridad. Mejorar la seguridad del software es siempre una preocupación constante y, con ese fin, siempre nos mantenemos actualizados con la última versión de dicho software.

15. Colabora con tu equipo

Toma nota de los tickets de seguridad que se elevan a tu equipo de soporte. Si sus clientes informan sobre algún problema de seguridad, conviértalo en una prioridad para solucionarlo. Su usuario final le da los mejores comentarios sobre su trabajo, ¡así que utilícelo bien!

Discuta los problemas de seguridad con el equipo de desarrollo y asegúrese de que cualquier parche que desarrolle solucione el problema de seguridad y no rompa nada más antes de hacerlo público. Si necesita colaborar con frecuencia con compañeros de equipo o trabajar con grandes clientes que tienen departamentos completos involucrados con el soporte, es una buena idea usar un software de seminario web para facilitar el proceso.

16. Prepárate para el peor de los casos

No se puede ser demasiado cuidadoso. La web y cualquier cosa publicada en la web nunca puede ser 100% segura. Sin embargo, puede tomar medidas que pueden ayudar a mitigar los riesgos.

La clave es evaluar las vulnerabilidades potenciales y desarrollar una respuesta de riesgo adecuada con las medidas de seguridad adecuadas. Con frecuencia aparecen nuevas técnicas de ataque, por lo que las mejores prácticas también deben evolucionar como parte de este proceso.

Por ejemplo, si se piratea un sitio web de WordPress, el plan de contingencia debe incluir qué hacer en caso de pirateo. Eso debería contener métodos de copia de seguridad, el proceso de limpieza y los pasos necesarios para reconstruir el sitio web y restaurar el servicio.

Dicho plan permitirá que todas las partes interesadas arreglen las cosas rápidamente sin verse abrumados por la sobrecarga de información o reaccionar exageradamente con acciones innecesarias.

Pensamientos finales

¿Qué más puedes hacer para mejorar la seguridad de tu tema o plugin? Bueno, muchas cosas. Verá, escribir código seguro no es cosa de una sola vez. Las tecnologías evolucionan y los métodos de ataque evolucionan con ella.

La realidad es que no puede prevenir todos los ciberataques ni mitigar todos los riesgos imaginables. Su objetivo debe ser hacer todo lo que pueda con lo que tiene y revisar constantemente su código para mejorarlo.

Cree un plan de seguridad bien definido para su sitio web y prepárese para enfrentar lo peor. Asegúrese de tomar los tickets o informes relacionados con la seguridad como la máxima prioridad.

Publique una publicación de blog o un anuncio dentro de su comunidad que ha lanzado una solución de seguridad para que todos sus usuarios puedan actualizar y evitar que sus sitios web se vean comprometidos.

La seguridad cibernética no es muy diferente de una estrategia militar. ¡La clave es la preparación! Con suerte, esta publicación lo ha ayudado con su preparación. Háganos saber en los comentarios qué medidas toma para mejorar la seguridad de su sitio web.

Referencias utilizadas en este artículo [ + ]

Referencias utilizadas en este artículo
1 https://www.codeproject.com/Articles/11643/Exploiting-MD5-collisions-in-C