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
determinados 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.
Collabnet 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.

FVE 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…)
Sobran los comentarios para este sistema. Excepcional, aunque el estilo no está completamente cuidado es fácil modificarlo utilizando plantillas.

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:
- ¿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?
- 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:
- 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)
- 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: 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
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.
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.
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:
El saber no ocupa lugar
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:


