Archivo de la categoría ‘Desarrollo Web’

Utilizar el robot.txt para ocultar tu sitio web

Aunque el entusiasta2.0 piense que esta es otra de mis campañas para demonizar a Google, sólo voy a explicar cómo ocultar una web utilizando el fichero robots.txt y utilizar el sitemap.xml para indicarle a Google las ramas de nuestro sitio que tiene permitido recorrer, por razones técnicas, de seguridad y de privacidad. Ya que Google aunque técnicamente hace productos muy buenos con sus políticas de privacidad (me corta todo el rollo) me crea una sensación un tanto contradictoria.

Obviamente si no aparecemos en Google no existimos, pero a veces nos puede interesar por ocultardeterminados motivos  que nuestro sitio no aparezca listado en Gran Hermano bien porque es un url de prueba, bien porque nos encontramos desarrollado el sitio o bien porque queremos esconderlo de miradas ajenas: por ejemplo un servicio de videovigilancia ip de un negocio privado, nunca debería aparecer listado en google.

Si queremos impedir  el acceso a google a determinadas zonas de nuestro sitio web, ya sea porque nos permite añadir un punto más de seguridad a nuestro sitio web ( ya que los spammer muchas veces se valen de google para planificar sus ataques), ya sea por otros motivos. Por seguridad en mis sitios webs, no me gusta mantener los directorios privados indexados por google (por ejemplo el acceso a la intranet, el gestor de correo, directorio de administración )

Por ejemplo en un sitio web tengo el siguiente escenario:

  • Utilizamos un gestor de contenidos Joomla (y es fácil que muchas carpetas se encuentren predeterminadas)
  • En la parte de pruebas tenía varios directorios con permisos de escritura (estaba realizando pruebas de componentes)
  • La administración de la versión 1.0.x de Joomla, tenía una vulnerabilidad que no había parcheado en inyección de sql.
  • El Gran Hermano estaba mostrando mis vergüenzas: Si hacía una búsqueda en Google devolvía la ruta al panel de administración (sólo haría falta un ataque de fuerza bruta), y la de pruebas, además eran de las más visitadas, sospecho que porque estaba migrando la página a 1.5.

¿Cómo atacan un sitio?

Generalmente el hacker de turno envía en primer lugar unos robots, que navegan por todos los enlaces visibles de la web buscando vulnerabilidades (autocompletado de formulario, directorios con permisos de escritura, directorios de administración), estos robots, o bien utilizan los motores de otros robots como google, yahoo, msn, para realizar ataques automatizados,  o infectan un conjunto de equipos a los que pone a navegar por internet (redes zombies), y a completar formularios, en busca de vulnerabilidades. ¿Porqué esta gente no dedicará su tiempo y esfuerzo a la computación distribuida o hacer un programa de libre distribución? “

¿Cómo evitar que Google enseñe mis vergüenzas?

Modificar el fichero robots.txt y crear un fichero sitemap.xml. Esto hará que el Gran Hermano evite el acceso a los sitios que indiquemos, pongo el ejemplo de un sitio que no quiero que muestre desde el raíz.

Para no permitir el acceso de cualquier robot al sitio web:

  • Prohibir el acceso a cualquier robot (esto previene los ataques):

User-Agent: *

Disallow: /

    • Para prohibir el acceso a un directorio:Disallow: /correo

    Disallow: /administrator
    Disallow: /pruebas
    Disallow: /intranet

      • Para prohibir la indexación de un fichero:

      Disallow: /cuentas_correo.html

      • Con etiquetas META

      <html>
      <head>
      <meta name=”googlebot” content=”noindex”>

      • Otra sintáxis admitida:

      <META name=”robots” content=”NOINDEX,NOFOLLOW,NOARCHIVE,NOODP,NOSNIPPET, NOOPD, NOYDIR”>

      Esto no permitiría realizar búsquedas, ni seguir un enlace, ni mirar un archivo, ni aparecer en el directorio, ni aparecer en yahoo.

      • Enlaces relacionados:

      Controlando como los robots de búsqueda indexan tu sitio (Herramientas de Google para webmasters artículo en Inglés)

      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.

      Cómo indicar varios idiomas en una web

      Una de las cuestiones más importantes cuando se desarrolla una página debe ser la usabilidad del sitio web. Muchos desarrolladores no son conscientes de las trabas que ponen al usuario para que encuentre la información que busca. En este caso en concreto me refiero al idioma de la web y a las listas de selección de paises cuando se completa un formulario. Hay que plantearse dos cuestiones principalmente:

      1. ¿El usuario sabe cómo se llama su país en otro idioma? Es decir, cuando en un formulario que nos deriva al sitio en nuestro idioma, se nos pregunta el idioma en inglés o en el idioma que está hecha la página. Probablemente como usuario nadie tenga problema en acceder si pone Spain, pero si lo pone en chino, o en ruso ¿seríamos capaces de encontrarlo?
      2. Cuando se pone un selector de idioma con una banderita al lado, por ejemplo la de españa, ¿ponemos al lado en texto el idioma en su idioma original, no ponemos nada o ponemos el idioma en su idioma nativo? Igual un usuario mexicano que quiere ver la página en español, no pincha sobre la bandera de españa.

      Por eso cuando creo un sitio web intento:

      1. No utilizar banderitas, si el cliente insiste, insisto en poner el texto al lado con el idioma en el idioma original (bandera de Francia texto al lado: Français)
      2. Cuando creo un listado de países para seleccionar el país en cuestión lo intento poner en su idioma original, creo que esto no supone ningún esfuerzo adicional como desarrolladores (lo mismo me cuesta buscar costa de marfil en inglés, que en su denominación local: Cote d´Ivoire), y facilita y mejora la experiencia y navegación del usuario.

      Escribo este artículo hoy, después de darme una vuelta por la página de sun (la auténtica competencia de google), y como navego por teclado, tener que hacer tres tecleos para buscar el sitio al que quería acceder España, que aparecía como Spain.

      Artículos relacionados:

      http://www.webmasterlibre.com/2008/10/29/no-uses-banderas-para-indicar-el-idioma

      Los 8 mandamientos para crear una página web

      1. Sé consciente de las necesidades de tu cliente, y haz consciente a tu cliente de tus limitaciones.

      El cliente habrá visto algo muy bonito en no sé qué página y debería comprender que técnicamente puede ser una cutrada. Hay que ser inflexible en la no compatibilidad con explorer, limitar el uso de flash y negarse, alegando incluso motivos religiosos, los marcos y el diseño con tablas.

      2. Elige un alojamiento adecuado a tus necesidades.

      Para un sitio web que vaya a recibir pocas visitas, seguramente nos servirá cualquier alojamiento compartido con una base de datos, para un proyecto más complejo habrá que pensar en la posibilidad de montar incluso un servidor dedicado. Factores muy importantes que tendrás que tener en cuenta al elegir tu proveedor de alojamiento: acceso ftp, espacio, tráfico permitido, cuentas de correo, arquitectura del servidor: apache, windows, linux, si permite la ejecución de script, perls, cgi´s (esto a veces impide que podamos generar direcciones amigables, estadísticas y componentes de terceras partes.

      3. Elige la tecnología que utilizarás para crearlo.

      Un Sistema Administrador de Contenidos (CMS), puede ser un buen punto de partida para una página segura, con multitud de funcionalidades y un buen diseño. Joomla!, Drupal y WordPress, correctamente configurados y personalizados ofrecen soluciones estables y fáciles de instalar.

      4. Define la jerarquía del sitio.

      Realiza una maqueta o prototipo que permita mostrar una serie de secciones, para que posteriormente el cliente añada las que crea oportunas.

      5. Adios a los malos hábitos.

      No utilices diseño con tablas, ni marcos, ni colores estridentes que puedan causar epilepsia. No abuses de las presentaciones flash.

      6. No contribuyas a dificultar la programación.

      Está prohibido que el sitio solo sea compatible con un navegador, si es estándar le ofreces suficientes alternativas al usuario.

      7. Mejora la experiencia del usuario.

      Haz que tu sitio sea accesible, estándar y usable. Siempre en la medida de tus posibilidades.

      8. Mantén limpia la red

      Realiza pruebas sobre tu sitio, existen multitud de programas de libre distribución que permiten realizar pruebas de estrés y de caja blanca y negra, son una excelente herramienta de auditoría, antes de que el sitio se encuentre en explotación.

      Monta un servidor web en tu pc

      Podemos montar un servidor web para utilizarlo como entorno de desarrollo en cualquier pc.  Disponemos de multitud de paquetes que integran PHP + MySql + Apache, es decir instalan un servidor local con los mismos servicios que cualquier servidor web(en internet), generalmente los entornos de desarrollo se instalan en una máquina a nivel local con propósitos de desarrollo y/o pruebas, aunque hay paquetes que nos permiten convertirlo fácilmente en un servidor de producción, y que sea accesible desde internet.

      Entre los mejores paquetes de distribución libre:

      AppServ: Recomendado para novatos, que tengan un Sistema Operativo Windows, permite instalar un servidor de base de datos, apache, y php con un ejecutable lo único que hay que cambiar es la contraseña del root (administrador de la base de datos) y pulsar siguiente siguiente. Una vez acabada la operación si tecleamos en nuestro navegador http://localhost/ Nos saldrá la pantalla de bienvenida de AppServ. Podemos acceder a la base de datos en http://localhost/phpMyAdmin/, el usuario es administrador de la base de datos (DBA), por lo cual podemos crear usuarios, bd, etc…

      Para poder visualizar nuestros proyectos deberemos incluir las carpetas en C:\AppServ\www\

      Esto nos permitirá acceder a la web mediante la dirección url http://localhost/nombre_carpeta/

      Si la carpeta contiene un fichero index se ejecutará automáticamente, como cualquier servidor web.

      XAMPP: Idéntico al anterior, aunque con opciones de SSL (Certificados Seguros), y mayor implementación de seguridad ya que está indicado para servidores de producción. Es multiplataforma, y existe versión linux y windows, su instalación no es tan intuitiva como la de appserv, y esto hace que sea requerido un nivel más alto de conocimiento para su correcta instalación.

      cherokee

      cherokee

      Cherokee: Es multiplataforma (puede ser instalado en diferentes sistemas operativos). También está pensado como un servidor de producción, y permite múltiples configuraciones para asegurar el servidor. También permite gestionar el servidor completamente.

      Estos serían los grandes en cuanto a propósitos web generales.

      Si queremos montar servidores más específicos, por ejemplo para Joomla existe un excelente paquete creado por JoomlaSpanish. Joomla Spanish Uniform Server RC 3

      Baby Web Server

      Para ASP existe una versión hecha en España que funciona como un servidor IIS (Windows Server), aunque esto también es posible configurarlo desde el Panel de Control –> Añadir programas de Microsoft –> Servicios –> Internet –> IIS Services. Entre los servicios: multihilo, modificación de cabeceras, configuración de SSL, etc…Mucho menos complicado que la configuración desde el panel de control, y más fácil de desinstalar, sin que se solape con otros servicios web que tengamos corriendo en nuestro Windows.

      Definición de WAMP / LAMP / XAMPP / MAMP en la wikipedia

      Crear Documentación de un Proyecto

      Cuando nos planteamos cualquier proyecto de programación la primera cosa que hay que tener en cuenta, es la continuidad del proyecto, puede que en un futuro el proyecto lo lleve otra persona, y comprender la programación de otros a veces es muy díficil. Para el trabajo en equipo resulta una condición indispensable tener una generosa documentación de un proyecto.

      Crear documentación de un proyecto

      Crear documentación de un proyecto

      Doxygen es un programa de libre distribución que nos puede ayudar mucho en esto. Entre sus principales características:

      • Multiplataforma
      • Libre Distribución (Licencia GNU/GPL)
      • Excelente documentación para desarrolladores (…)

      Se puede utilizar para documentar código escrito en:

      Leer el resto de esta entrada »

      El saber no ocupa lugar

      claroline

      claroline

      claroline.net es un administrador de contenidos (CMS en inglés), que nos permite crear una plataforma de aprendizaje en línea (e-learning), y modficarla, mejorar, ajustarla y distribuirla como se nos antoje.
      Sus características más destacables:

      • Coordinar Grupos de Trabajo (aulas)
      • Crear ejercicios tipo test, enlaces
      • Gestionar documentos y otros recursos para facilitar el aprendizaje
      • Dispone de módulos que nos permiten añadir nuevas funcionalidades
      • Libre Distribución
      • Instalador web (también se puede realizar una instalación manual)

      Requisitos técnicos:

      • Un servidor Web (Se comienda Apache, pero otros deberían funcionar también),
      • PHP 4.3.10 o posterior,
      • El servidor de bases de datos MySQL 4.0 o posterior,

      Enlaces relacionados:

      http://www.claroline.net/