Martes, 30 Julio 2013 22:16

Cifra los datos sensibles de acceso y formularios de Joomla sin necesidad de utilizar SSL

Escrito por 
CMS:  Joomla! |  Versión:  2.5.x |  Nivel de dificultad:  Básico |  Tiempo estimado de lectura:  10 minutos


Encrypt ConfigurationSi queremos fortificar un sitio web Joomla no es suficiente solo instalar un Firewall perimetral como RsFirewall que vigile los accesos al backend y bloquee IP,s o rangos predeterminados en base a una lista. jSecure impedirá que desvelemos el formulario de acceso a /administrator pero no eludirá un ataque de diccionario contra la url enmascarada tras el plugin para determinar la "palabra de paso", y no todo se resolverá ocultando "generator" o "metas" pues existen cientos de herramientas que permite detectar de que CMS se trata y otros datos reveladores.

Lo siguiente suele ser escuchar mediante sniffers (redes abiertas o desprotegidas - wireshark) las conexiones de forma que podamos detectar contraseñas que viajan en texto plano al momento de ser introducidas....

A menos que usemos SSL, un usuario al iniciar sesión en Joomla envía su contraseña en texto plano a través de la red. Un usuario malintencionado podría aprovechar una vulnerabilidad y obtener acceso al backend.

Vamos a prevenir esta situación utilizando el plugin Encrypt Configuration, disponible para Joomla 2.5.x y 3.1.x respectivamente. Este plugin es una alternativa a SSL. Utiliza RSA para cifrar las contraseñas o cualquier otra información que se desee desde el componente.

Se recomienda tener la extensión bcmath instalada en el servidor, de lo contrario se utiliza el algoritmo DES.


Ver y valorar Encrypt Configuration en el Joomla! Extensions Directory.

Descargar Encrypt Configuration desde la web del autor.


Instalamos el componente de cifrado y una vez instalado, cada vez que un usuario intenta iniciar sesión en Joomla (en el frontal o la parte de administración), la contraseña se cifrará en el navegador web antes de que sea enviada al servidor, donde se descifra. Las contraseñas también se cifran cuando un administrador cambia la contraseña de un usuario, cuando un usuario se registra y cuando un usuario registrado cambia su propia contraseña.

Hay que importar plugins de cifrado para determinados módulos de registro u otras extensiones de terceros que estemos utilizando. Puedes descargar los archivos .zip para los controles preconfigurados. Haz clic en la opción de menú Componentes, Controles de configuración, Cifrado. Luego clic en "Examinar", selecciona el archivo zip descargado y haz clic en "Importar".

El plugin de encriptación no sólo encripta las contraseñas configuradas por defecto, también se puede configurar para cifrar formularios sensibles u otros elementos. Esto se puede hacer en la página se muestra al hacer clic en el menú de "controles de cifrado". En esta página podrás ver inicialmente la configuración por defecto para cifrar todas las contraseñas predeterminadas de Joomla. También podrás cambiar o añadir nuevos elementos.

El plugin realiza el cifrado mediante la inserción de código JavaScript dentro de la página. De esta manera el cifrado se ejecuta antes de enviar la página. Para añadir nuevos elementos sólo hay que configurar los elementos en los que los formularios contienen datos confidenciales.

Supongamos que has desarrollado (o descargado) un componente que tiene un formulario con información sensible, un número de tarjeta de crédito, por ejemplo. A continuación, hacemos clic en el elemento de menú "Controles de cifrado" y luego en el botón "Nuevo". Aparecerá un formulario donde deberás introducir los siguientes elementos:

  • Descripción: Sólo tienes que escribir lo que quieras. Déjalo en blanco o escribe algo para recordar lo que es este elemento.
  • Habilitado: Botones para decidir si deseas que este control cifre o no.
  • ID Formulario: El ID del formulario en que el elemento esté activo.
  • Nombre: El nombre del formulario. No se puede dejar el ID y el nombre del formulario en blanco.
  • ID Control: El ID del elemento de entrada que deseas cifrar. No puede quedar en blanco, el elemento debe tener un ID.
  • Nombre Control: El nombre del elemento de entrada que deseas cifrar. No puede quedar en blanco, el elemento debe tener un nombre.
  • Cifrar Control si está vacío: Muestra un botón con la opción para decidir si el control debe ser cifrado si está vacío.
  • Longitud mínima del Control: Debe ser un número entero que especifique la longitud mínima del valor del control por el que se cifrará.
  • Filtro Opción: El valor del parámetro de opción necesario para el cinfrado del control. Si se deja en blanco se ignora el parámetro opción.
  • Ver Filtro: Lo mismo que las opciones de filtro, pero en este caso para el parámetro de vista.
  • Inserta código del formulario a cifrar antes: La mayoría de las veces no es necesario este parámetro. A veces, el envío del formulario se desencadena a partir de código JavaScript y en algunos navegadores (o todos ellos) no se produce el evento onSubmit. Así que hay que insertar código JavaScript para iniciar el cifrado, lo que escribas aquí es la línea de código antes de la cual se inserta el código para cifrar. Por ejemplo en el backend este valor es "login.submit\(\);". Observa las barras invertidas antes del paréntesis. Esto es así porque ya que se trata de una expresión regular.
  • Inserta código del formulario a cifrar antes de enviar al controlador de eventos: Si esta propiedad se establece en "Sí", el código de encriptación se inserta en el evento onSubmit del formulario. Se debe fijar siempre este valor en Si (yes).
  • Utilizar en el backend: Si este valor se establece en "Sí", el cifrado se aplica al backend.
  • Utilizar el frontend: Si este valor se establece en "Sí", el cifrado se aplica en el frontend.
  • Mostrar señal cifrada: Si este valor se establece en "Sí", podrás ver un cuadro de texto flotante sobre el control encriptado después del proceso de cifrado.

Es importante revisar la web del autor para verificar si nuevos controles de cifrado han sido incorporados o añadidos nuevos campos de control.


Importar archivos XML o ZIP de controles:

Importar plugins de cifrado para los módulos de registro u otras extensiones que estemos utilizando. Puede descargar los archivos zip para los controles en el siguiente enlace:

http://www.ratmilwebsolutions.com/downloads/encryption-plugins.html

Hacer clic en la opción de menú Componentes/Controles de configuración/Cifrado. Hacer clic en "Examinar", seleccionar el archivo zip descargado y clic en "Importar".


En el siguiente vídeo realizamos la instalación del plugin y vemos un caso practico de modificación de contraseña de un usuario registrado y creación de usuario desde el frontend.



Tan importante es realizar copias de seguridad periódicamente, como utilizar extensiones de seguridad adicionales como contramedidas ante posibles brechas de seguridad. Encriptar datos de acceso y de formularios sensibles forma parte de ese elenco de medidas adicionales que todo desarrollador, implementador o webmaster debería utilizar de forma habitual en sus sitios web.



¿Te ha resultado interesante este artículo?

Suscríbete para recibir consejos exclusivos para WordPress, Joomla y PrestaShop



Luis Méndez Alejo

Miembro del equipo técnico de Webempresa.
Coordinador de contenidos en el Blog y en Youtube.
Google+