Archivo de la categoría ‘A Fondo [Desarrollo Web]’

Consejos básicos para asegurar una web

Medidas de seguridad básicas:

  • Si instalas un Gestor de Contenidos como Joomla, Drupal, WordPress, … instala las actualizaciones y parches que se publican periódicamente. Además de aplicar medidas de seguridad básicas.
  • Si instalas un componente de terceros, añadéle alguna medida adicional de seguridad. Por ejemplo si es un componente de contacto o formulario, crea un campo de texto y colócalo en una capa <div> oculta, si algún robot de spam completa ese campo (ya que no se visualiza en pantalla), haz que el formulario se envíe al correo electrónico como chivato. Esta técnica se puede aplicar para cualquier formulario.

¿Cómo saber que me atacan?

Puedes poner chivatos en varios sitios de la web, pero desconfía si:

  • Revisando los logs del servidor hay una ip (o un rango de ip) probando toda la web muchas veces al día.
  • Hay una ip que intenta completar los formularios constantemente.
  • Mi sitio ha aumentado de visitas. (Échale un vistazo a los logs, por si acaso)

¿Qué puedo hacer?

  • Lo primero, que no cunda el pánico, si tienes unas medidas de seguridad básicas mediante el fichero .htaccess, el robots.txt, los permisos del servidor, etc… Es solo un aviso, y todavía se puede actuar:
  • Restringe los permisos del servidor y habilitalos solamente en los directorios donde sea necesario escribir. Cambiar permisos a 755 aplicando a todos los subdirectorios y ficheros.
  • Si un componente de terceros necesita permisos en muchos directorios de escritura 777 casi es mejor no instalarlo fuera de un entorno de desarrollo. Es una vulnerabilidad importante en el servidor.
  • Evita usar flash: Hay componentes que quedan muy bonitos (como flash), pero que son tremendamente inseguros, intenta utilizarlos lo menos posible. Existen alternativas en javascript, jquery, mootols, más seguras.
  • Haz pruebas sobre tu sitio web como si fueras un atacante. Aquí tienes programas para hacer pruebas tanto de caja negra como de caja blanca.
  • Haz copias de seguridad semanales o diarias, en función del tráfico del sitio y de las actualizaciones. Esto siempre te permite volver a un estado anterior a la catarsis.

Y sobre todo recuerda: Solo los paranoicos sobreviven...

Este artículo es un poco como las capítulos de las series, que recuerdan la última temporada con mogollón de recortes (hasta he reutilizado la foto), :)

Piwik sistema completo de estadísticas de libre distribución

Por fin recupero la rutina y hoy os recomiendo un completo sistema de estadísticas similar a google analytics, con una diferencia muy importante: como es código de libre distribución puedo modificarlo, y sé lo que sé hace con las estadísticas.

El sistema es muy sencillo de instalar y nos permite tener varios sitios ya que utiliza una cookie para almacenar las estadísticas. La instalación es muy sencilla:

Lo descargamos -http://piwik.org/latest.zip

Lo descomprimimos, lo subimos vía ftp al alojamiento y seguimos las instrucciones de instalación.

Nos permite la configuración de permisos para cada usuario, y las estadísticas a las que tienen acceso, además todos los módulos del tablero son configurables, sin duda una alternativa al arcaico awstats y sobre todo a google analytics de gran hermano.

Dispone de un plugin para joomla 1.5 que nos permite implementarlo en un sitio joomla sin tener que insertar el código en cada página, ni siquiera en la plantilla.

Una maravilla, y sino me gusta pues accedo al código y lo cambio!

Aquí podéis ver una demo del aspecto:

http://piwik.org/demo/index.php?module=CoreHome&action=index&idSite=1&period=day&date=yesterday#module=Dashboard&action=embeddedIndex&idSite=1&period=day&date=yesterday

Aquí podéis descargar el plugin para integrarlo en sitios joomla.

http://www.artd.ch/artd-webdesign-s-blog/compiwik-a-piwik-integration-to-joomla-15.html

http://joomlacode.org/gf/project/piwikjoomla/frs/

Generar enlaces (url’s) amigables en Joomla 1.5

Si en algo se caracteriza la web 2.0 es en la empatía, es decir que tanto desarrolladores como diseñadores nos pongamos en el lugar del usuario, que hagamos webs más sencillas de navegar, más fáciles de recordar y que fidelicen al usuario.

Debido a que los Sistemas de Administración de Contenidos (CMS), generan los contenidos de manera dinámica, es posible que nos encontremos con enlaces (url’s) díficiles de recordar. Si usamos el sentido común, lo lógico es que la web se llame: http://www.misitio.com/descargas y no http:www.misitio.com/index.php?componente=upload&category=2&id=3, que sería la url que nos mostraría joomla, entre las razones por las cuales debemos hacer un enlace amigable también se  incluyen el posicionamiento para que google devuelva nuestra web como resultado de una búsqueda hecha por el usuario y la facilidad del usuario para recordarlo.

Los enlaces amigables se consiguen a través del fichero htaccess y activando un par de opciones en la configuración global. En Joomla hay muchas maneras de conseguirlo la más simple es tener un alojamiento con el módulo de apache mod_rewrite activado. Renombrar el archivo htaccess.txt a .htaccess que se encuentra en el raíz del sitio tras una instalación joomla y en la página de configuración global (entrando en el panel de administración del sitio web) activar las siguientes opciones:

  • URLS amigables para motores –> Sí
  • Usar apache mod_rewrite –> Sí
  • Agregar el sufijo a las url´s –> Este parámetro mostrará los enlaces como http://misitio/descargas o http://misitio/descargas.html ó htm, o la que le queramos poner, esto se configura en el htaccess.
Parámetros de optimización de SEO
URLs amigables para motores de búsqueda
Usar Apache mod_rewrite
Agregar el sufijo a las URLs

Fidelizar a un usuario utilizando diferentes proveedores de identidad

Una de las cosas que la web 2.0 sin duda va a cambiar es la forma en la que los usuarios acceden al sitio, permitiendo identificarse con proveedores externos (facebook, msn, yahoo, msn…). Como usuaria estoy harta de rellenar el mismo formulario una y otra vez para ver las imágenes de la cena con mi cuadrilla en hi5, facebook, msn, gmail, yahoo….

Los regist1251059699_icontexto-user-web20-twitterros en sitios pequeños, son incómodos para el usuario, que maneja tantas identidades que al final hacer otro registro en un sitio web para acceder a contenidos especializados es una barrera a la navegación y una mala experiencia para el usuario, harto de tener que crear una cuenta para cada servicio: flickair, facebook, msn, myspace, hi5…

Se acabó el tiempo de fidelizar al usuario mediante crear una cuenta en el sitio (aunque esto se pueda hacer igualmente), si integramos la identificación con diferentes proveedores conseguiremos:

  • 1251059696_icontexto-user-web20-facebookEvitarnos problemas en la administración del sitio web (menos carga en la parte de la administración de usuarios)
  • Fidelizar a nuestros usuarios eliminando la barrera psicológica que supone crear otro usuario, ya que si integramos a los grandes proveedores, probablemente el 90% de los usuarios tendrán un usuario facebook, gmail, msn, etc… y no tendrán que completar ningún formulario, y para el 10% restante lo ofreceremos la posibilidad de crear un cuenta de usuario.

1251059683_icontexto-user-web20-myspaceAl fin y al cabo lo importante ahora no es tener muchos usuarios y muchos menos con los lectores de marcadores dinámicos que permiten a nuestro asiduo visitante leer las noticias, sin tener que ver ni siquiera la publicidad del sitio. ¿Entonces dónde está el negocio? En la información que provee el usuario sobre lo que más le interesa, el prestigio, el asesoramiento…El número de visitas, aunque no sean usuarios con clave y contraseña.

Facebook es el primero de los grandes que se ha dado cuenta de esto y ofrece amplia documentación y facilidades para su integración en otros sitios, no le importa que el usuario visite otros sitios al final vuelve a la nave nodriza a poner sus fotos, aplicaciones, etc…

Para joomla:

http://www.cmsmarket.com/extensions-directory/social+networking/community/jfbconnect

Para experimentar un poco:

http://developers.facebook.com/connect.php

Por la parte de los desarrolladores, la única parte con la que tendremos especial cuidado será en la transferencia de estos datos desde nuestro sitio web al del proveedor,  manejar estos datos de una manera segura, utilizando conexiones encriptadas para evitar la filtración a ningún otro sitio, al fin y al cabo, como usuarios exigimos nuestro derecho a la privacidad en la navegación.

Añadir funcionalidad al sitio drupal [instalar temas y módulos]

drupalWebmasterlibre me hace un hueco en su blog para escribir la tercera parte de un manual básico de instalación de drupal En esta tercera parte se muestra un ejemplo de instalación de módulo y de cambio de tema.

Se presupone que el usuario está familiarizado con la instalación de CMS.

Cambiar el aspecto del sitio. Instalar un tema

Descargamos un tema para drupal (según la versión de drupal que hayamos instalado)

http://drupal.org/project/Themes

  • Descomprime la carpeta descargada y transfierela vía ftp al directorio themes.

En la parte de administración del sitio vamos a:

Administrar → Construcción del Sitio → Temas
Se muestran en un listado los temas disponibles:

Seguir leyendo el artículo [en webmasterlibre.com]

zikula. Un Gestor de Contenidos renovado

zikulalogoEn los primeros desarrollos de sitios dinámicos que hacía, utilizaba frecuentemente post-nuke ya que era uno de los que más me gustaba (más que phpnuke), era un Gestor de Contenidos, versátil, potente y facilmente modificable con una cantidad de documentación y soporte en español no comparable a ninguna otra gracias principalmente a http://dev-postnuke.com/.

La comunidad de postnuke hispano pasará por ser unas de las más activas, y seguramente zikula.es lo seguirá siendo. El proyecto Postnuke no supo adaptarse y las plantillas se quedaron obsoletas, así como un montón de módulos y componentes.

Obviamente la web 2.0 exigía una renovación total, o la creación de un nuevo proyecto, así recientemente se anunciaba el fin del proyecto post-nuke para dar paso a uno nuevo: zikula.

La renovación ha sido completa, y hablamos  de un proyecto ambicioso, y realmente diferente, además de estable y versátil.  El cambio es notable en todos los aspectos:  el nombre, las plantillas, la gestión de componentes., la organización del repositorio, el wiki de código, etc…

Sin duda un gestor de contenido, que nos facilitará la creación de muchos sitios web.

http://zikula.org

http://zikula.es

Asegurar un sitio Joomla! en 4 pasos

Si tenemos un sitio web Joomla básico, aquí os van cuatro sencillos consejos que os permitirán subir mucho el nivel de seguridad de una instalación predeterminada en media hora.

superlopez-11. Configurar los permisos:

Los permisos se debe configurar 755 a las carpetas y 644 a los ficheros.

2. Cambiar la ruta al administrator

Si hemos realizado la instalación predeterminada y no hemos movido/renombrado ningún directorio,  el atacante sabe perfectamente la ruta donde se encuentra instalada nuestra parte de administración. Para poner dificultades: Leer el resto de esta entrada »

Añadiendo funcionalidad a drupal [instalar y configurar módulos]

La segunda entrega de la instalación de drupal, artículo publicado en webmasterlibre.com.

En este artículo comenzamos a crear nuestro sitio web mediante módulos que nos permiten añadir funcionalidades.

Leer más [artículo en webmasterlibre.com]

Gestores de proyectos de desarrollo colaborativos

Cuando estamos creando un proyecto entre varias personas, se hace imprescindible montar un entorno colaborativo.

Existen excelentes programas de libre distribución que nos permiten hacer esto vía web (CMS de gestores de proyectos), de todas las alternativas posibles dependerá el uso que le vamos a dar, mis favoritos:

Gestores de proyectos con controlador de versión de código, y aplicación de tecnologías de programación extremas y/o ágiles como SCRUM, XP, y que nos permiten tanto gestionar los diferentes usuarios, tareas, proyectos, etc…como controlar los cambios realizados en el código, de modo que todos los desarrolladores trabajen sobre el mismo código, y generar un informe sobre quién ha hecho cada cambio, y la posibilidad de recuperar versiones anteriores de ficheros.

logo_collabnetCollabnet svn: Collabnet Subversion.  Integración del ciclo de vida del software, binarios certificados de subversion (asegura que todos los desarrolladores trabajan con la misma versión que la de subversion). Repositorio centralizado de código fuente. Versión para escritorio y multiplataforma.

firstlogofveFVE Project Manager: Integración de tecnologías ágiles y de programación extrema como SCRUMP, XP…Es una versión modificada de dotnet hecha en españa! Incluye también subversion.

Gestores de proyectos vía web sin control de versiones: En esta categoría se encuentran los gestores de proyectos enfocados a la gestión de soporte técnico, y/o herramienta de comunicación con el usuario, y la mayoría disponen de un sistema de incidencias. Todos disponen de creación de grupos, asignación de tareas, creación de roles, control del estado del proyecto, generadores de informes, envío de solicitud de asistencia (ticket…)

phprojekt_logo2

Sobran los comentarios para este sistema. Excepcional, aunque el estilo no está completamente cuidado es fácil modificarlo utilizando plantillas.

phpeasyproject

PhpEasyProject: Sin duda uno de los más prometedores. Múltiples funcionalidad y sobre todo, facilidad de uso, para quienes necesitan un gestor de proyectos, fácil de instalar y de gestionar.

Utiliza el motor de plantillas Smarty, y entre otras cosas permite la exportación de datos a otras aplicaciones mediante xml.

Prueba tus servidores

Una parte muy importante en un sitio web y que se tiene muy poco en cuenta son las pruebas sobre el sitio web, tanto si tenemos un servidor dedicado, o un alojamiento compartido, deberemos comprobar que nuestro sitio aguanta repuntes de visitas, está bien programado, y responde de una manera rápida.

Para hacer pruebas sobre un servidor web, habrá que diferenciar dos partes fundamentales:

  • El rendimiento de la máquina

Para ello tendremos los controladores siempre actualizados con las versiones estables.

Pruebas sobre el procesador, rendimiento de la tarjeta gráfica, tarjeta de red, chequeo de disco duro.

  • El rendimiento de los aplicativos web.

Para ello deberemos hacer pruebas sobre el envío de todos los formularios, comprobación de programación redundante, cierre correcto de las conexiones a la base de datos, eliminación de las variables de sesión transcurrido un tiempo x desde la primera conexión.

Actualización y parcheado del sistema operativo,  software y aplicaciones de terceros.

  • La velocidad de la red.

Debemos asegurarnos un caudal constante, fluido y adecuado al tráfico de nuestro sitio web.

Para ello podemos realizar pruebas, realizando peticiones simultáneas con múltiples usuarios que realicen peticiones constantes al servidor, en diferentes formularios. Esto además de ayudarnos a comprobar la solidez de nuestros aplicativos, comprobará la velocidad de respuesta de la base de datos, carga de memoria, balanceo de aplicaciones…

Estos programas nos ayudan a realizar todo tipo de pruebas automatizadas, son de libre distribución :

Funkload Emula un navegador web (monohilo), con comprobación envío de formularios, funcionamiento de aplicativos web, monitorización de serviedores… Sólo Linux

testmakerTestMaker Test de escalabilidad, funcionalidad y mejora. Se crean agentes que nos permiten emular pruebas inteligentes, como si fuerámos un usuario navegando (multihilo). Buen centro de soporte. Todas las plataformas.

pro_box_med_whiteJblitz Puede hacer pruebas sobre scripts ASP, scripts JSP, Servlets, CGI scripts etc. (Multihilo). Hecho en java, funciona sobre windows. Todas las plataformas, buen entorno gráfico.