Con la gente del grupo Web & Beer armamos un checklist de los puntos importantes con los que debería cumplir una web antes de salir a producción. Estos puntos que se van a mencionar son importante en cualquier desarrollo web, y contempla la mayoría de los problemas. Es importante que chequeen estos puntos en sus desarrollos actuales, y traten de evitar tener problemas con los nuevos sistemas que vendrán.
- Validar formularios y entrada de datos desde el lado del cliente y desde el lado del servidor.
Este punto es uno de los mas importantes, muchos programadores validan los datos desde uno de los dos lados, o del cliente o del servidor. La idea es que siempre se validen los dos. Se podría obviar la validación
del lado del cliente, pero nunca del lado del servidor, nosotros tenemos que saber que datos y de que tipo son los que entran en nuestro sistema. Para eso tenemos que comprobar si es alfanumérico, si es numérico, si es un mail, etc. No hay conformarse solo con validar los datos desde javascripts, ya que esto puede ser filtrado. La validacion del lado del cliente sirve para que no hagamos esperar al usuario mientras se procesan los datos en el servidor, sino escribió un dato en un campo obligatorio no lo dejamos enviar el formulario. Con un simple plugin de firefox puedo cambiar los datos que se envían por post agregando lo necesario para hacer un sql injection. Hay que chquear que la cantidad de caracteres que pueda ingresar sea igual o menor que la capacidad del campo que va a guardar este dato en la base de datos.
- Validar Claves y nombre de usuarios de los usuarios del sistema.
Los usuarios no pueden tener claves de 2 o 3 letras, tienen que tener claves seguras o por lo menos lo mayor posible, deberíamos asegurarnos que una clave sea de por lo menos 5 caracteres y no sea igual que el usuario, o no permitir secuencias de números o 5 datos repetidos como 55555, no estaría mal validar que los usuarios no ingresen claves que esten dentro de las claves mas comunes, como qwerty, 123456, dios!, miclave, password, etc. Esto es para darle cierta seguridad a nuestro sistemas y evitar casos de phishing. Otra cosa que veo muy seguido es que muchos validan que la clave sea alfanumérica, pero si quiero poner una clave del estilo ph1s#u!r no podría. Se debería permitir este tipo de claves ya que es mucho mas segura que una alfanumérica. Lo mismo con los usuarios, minimamente tienen que tener 5 caracteres y en lo posible alfanuméricos. Estoy viendo cada vez mas seguido web que usan los mails como nombre de usuario.
- Encoding.
Este tema es muy problematico, quien no ha tenido problemas con este punto?. Tenemos que ser homogeneos y elegir siempre el mismo encodi
gn, el ideal es utf-8 ya que es con el que trabajan los servidores unix donde estarán alojados la mayoría de los sistemas web. Hay que revisar que los archivos que usemos, y las cabeceras de los xhtml que estén en utf-8, también tenemos que asegurarnos que nuestra base de datos este guardando los datos en utf-8.
- Paginas de errores.
Cuando alguien intenta acceder a una url de nuestro dominio que no corresponde a ninguna pagina activa, deberíamos mostrar un error personalizado de 404 y agregar links que lo dirijan a la home de nuestra web o a un buscador de contenidos.
- Cross Browser.
El gran dolor de cabeza de cualquier desarrollador. Esto es algo muy difícil de lograr ya que muchos navegadores implementan su propio estándar y no siguen el de la w3c, digase ie6, ie7, ie8. Pero también hay que saber que los navegadores interpretan algunas cosas de forma diferente por eso es ideal probarlo en distintos browsers para que no se rompa el diseño.
Es probable que tengas que usar Css Hack para que tu sitio sea cross browser
Puedes usar Browsershots para ver una screenshot de tu web en diferentes navegadores
- Evitar archivos de configuracion dentro del webroot.
Este es otro de los puntos de seguridad grave que podemos llegar a tener. Los archivos de configuracion que tiene los datos de acceso a la base de datos o accesos a web services tienen que estar fuera del webroot de nuestro sitio.
Estos son aspectos generales, pero ahora vamos a hablar de algunos puntos en cuanto a la accesibilidad y el SEO.
- Sitemap.
Es importante que si quieren que su sitio sea indexado por los buscadores tengas un sitemap, y den de alta el mismo en estos buscadores. Dice la leyenda que si tu sitemap tiene el nombre sitemap.xml, google lo indexa mejor que si fuese sitemap.php o cualquier otro nombre.
- Imagenes.
Las imagenes son un ingreso de visitas importantes si se usan adecuadamentes. Hay dos puntos necesario para manejar las imagenes y conseguir visitas con ellas, tener un alt con la descripción de la imagen, y que el nombre del archivo haga una descripción del mismo, por ejemplo cristina_kirchner_en_la_rosada.jpg, si se fijan cuando ustedes buscan una imagen en Google Images se van a dar cuenta que usan estos dos criterios para la búsqueda.
- Paginas internas
Cada pagina que tenga nuestro sistema debería tener la descripción de esta en la url. Esto se llama clean urls, y se ve mucho en los cms, que nos permiten que el acceso a una pagina en vez de ser http://dominio.com/noticia/index.php?newsId=342 se convierta en http://dominio.com/noticia/newsId/342/ esto es mas claro que lo que vimos en el ejemplo anterior, perotambién podríamos mejorarlo mucho mas si nuestra url luciera así http://dominio.com/news/342_cristina_aumenta_sueldo_a_los_jubilados.html. Google indexa mejor los contenidos donde su url describe el contenido que va a mostrar. Esto es facil de solucionar agregando alias a nuestras paginas, o creando alguna regla de rewrite que maneje este problema, los que usen ZF pueden usar Zend_Route , pero siempre seria mas optimo que lo hagan desde .htaccess.
Si tu sitio tiene bajo control estos puntos te invito que revises los otros puntos creados por la gente de Web & Beer.




Me decidi probar la nueva estella de Zend,
Basicamente es un entorno de administracion para servidores web, las caracteristicas principales son la administracion de los archivos de configuracion, monitoreo de nuestros logs,monitoreo de aplicaciones, y promete un entorno seguro. Todo esto dentro de una interface Web que de hecho es bastante agradable.
La verdad que no vale la pena pagar por este producto, creo que con un grupo de aplicaciones open source se puede conseguir esto y seguramente mucho mas. Por ahora voy a seguir usandolo hasta que se acabe la licencia de prueba. En estos treinta dias voy a tratar de sacarle mas provecho para entende porque pagar lo que sale la licencia. Quizas el soporte lo valga, pero pagar soporte para esto?. La instalacion la hice a partir del tar.gz, tengo Arch linux, asi que para hacerla facil preferi instalarlo a mano.
Despues de bajarme el tar.gz, lo descomprimi en la carpeta /opt/. Tuve que crear un symlink de la carpeta /var/log/ y de /var/www/html para que se acople facilmente a la estructura de Zend Server. Despues cree los virtual host dentro de /opt/zend/apache2/conf/vhost/. Siempre uso esta carpeta para tener cada dominio/Subdominio con su propio archivo de configuracion, esto me facilita mucho la organizacion. Despues restarteo el servicio de apache, y ya tengo montado mi servidor web con Zend Server, hasta que tenga que pagar por esto 



estuve debatiendo entre el uso o no de Zend_Dojo. Sinceramente siempre use Jquery, mootools y prototype, la verdad es que en un punto llegan a ser lo mismo, alguna aporta algo que la otra no, pero masomenos tienen el mismo fin, hacernos la vida mas facil, y este no fue el caso de Dojo, ultimamente estaba usando Zend_Dojo para un proyecto, y me costo bastante usarlo, y nunca llegue a aprovecharlo al maximo, termino escribiendo mucho codigo y no me gusta los resultados que obtengo y tampoco me acostumbro a su sintaxis, tan diferente a la facilidad de mootools. Debido a esto y a una charla con scrammatte decidi usar mootools y no complicarme la vida con estas cosas que no aportan gran cosa. Asi que a partir de ahora vamos a usar Mootools en el blog que estamos desarrollando con Zend Framework, y nos olvidamos de Zend Dojo.
