martes, 29 de junio de 2010

Problemas en el desarrollo de aplicaciones en Facebook

Llevo ya algún tiempo desarrollando en los huecos libres la, prometida, aplicación para registrar las visitas a los perfiles de usuario y páginas de Facebook y me he encontrado con un gran abanico de problemas a la hora de implementarla. Todos estos impedimentos y problemas que me he encontrado pueden ayudaros a entender el funcionamiento de Facebook y de sus aplicaciones.

(Antes de empezar, indicar que trataré de expresarlo en un lenguaje que esté al alcance de todos, pero al tratar temas relacionados con la programación de ordenadores, servicios Webs, etc... es posible que sea capaz de darle la claridad y sencillez que debería tener).

Cambios en las API's
Las API's, son las herramientas de las que disponemos para que nuestras aplicaciones interaccionen con Facebook y otros sistemas. Dichas API's están sufriendo un remodelado a todos los niveles con el fin de mejorar los niveles de seguridad de las aplicaciones, de modo que hay cosas que en un principio (hace ya más de 2 meses) funcionaban y han ido dejando de funcionar, sin que se haya documentado como deben utilizarse ahora esas mismas funciones.

Una de las primeras cosas que dejó de funcionar y que, ha día de hoy, no se ha informado como debe realizarse la llamada es la caja que aparece en el perfil del usuario, apareciendo como se ve en la imagen.

Pequeños pasos hasta descubrir que hace Facebook
Inicialmente, introduje referencias servicios Web externos (aplicaciones de otras empresas) que ya realizaban la funcionalidad deseada, pero extrañamente solo contabilizaban 1 ó 2 visitas al día desde la pantalla del perfil (además, indicaba que el acceso se había realizado desde USA), en cambio cuando accedía a la aplicación en una ventana fuera del perfil, si que se contabilizaban correctamente.

Posteriormente, utilizando los servicios de Google Analytics, que me daba más precisión en la localización de las visitas, seguía ocurriendo lo mismo, todas las visitas al perfil se registraban como procedentes de "Palo Alto", donde se encuentran las oficinas centrales de Facebook, Ashburn, Marietta, etc... (servidores de backup, trabajan en paralelo y se apoyan en caso de caída de alguno de ellos) aunque el acceso a la aplicación desde fuera del perfil se registraban correctamente.

Utilizando en este caso las API's de Google, preparé una aplicación flash (utilizado para hacer presentaciones, aplicaciones, etc... más conocido por los juegos flash) para integrarle el contador de visitas, pero Facebook reemplaza las aplicaciones flash por imágenes estáticas y, solamente descarga y ejecuta el flash, si el usuario pincha en la imagen correspondiente.

También integré Scripts (pequeñas aplicaciones) en el código pero no se ejecutan si el usuario no realiza alguna acción para que se ejecute, es decir, debe pincharse con el ratón en algún sitio dentro de la aplicación para que se ejecute.

En cualquier caso, cuando se ejecuta, no puede obtener ningún dato del usuario que visita el perfil (ni siquiera los datos públicos) si no se ha pedido permiso previamente para ello con otras funciones que también han cambiado.

¿Como funcionan las aplicaciones dentro del perfil de Facebook?
De todo lo expuesto anteriormente se desprende que, los usuarios pueden estar tranquilos, ya que ninguna aplicación identificará las visitas que hagan a otros perfiles, ya que para ello deben pinchar en algún sitio dentro de la aplicación que identifique las visitas y, posteriormente, deben de dar permiso para acceder a sus datos.

Otra cosa también interesante y que debería ayudar a proteger a los usuarios si Facebook lo gestiona correctamente es el mecanismo de navegación cuando accedemos al perfil de un usuario o aplicación.

 El funcionamiento general de cualquier Web por la que naveguemos es el siguiente:
Cuando vemos una página Web, la dirección que introducimos hace referencia a una página concreta del servidor Web principal. Esta página a su vez puede tener referencias a contenido que se encuentran en otras ubicaciones, este contenido puede ser de cualquier tipo (vídeos, fotos, fragmentos de la página, banners de publicidad, etc...), así como enlaces a otras Webs (como estos enlaces que te envía a la página de Tecnoenredados en Facebook, Google, etc...), de modo que, cuando seleccionamos un enlace vamos directamente a la dirección seleccionada y el contenido se descarga directamente de los servidores en los que se encuentran.

En cambio, Facebook redirecciona todos estos enlaces para que todo el tráfico que se genere desde los perfiles de usuarios y páginas pase por sus servidores, como se muestra en la siguiente imagen:

Cuando vemos una página de perfil de Facebook, la página completa se genera en los servidores de Facebook, no permitiendo el acceso directo a través de Internet. En este proceso, se reestructura parte de lo que se va a mostrar o ejecutar, haciendo que los Scripts no se puedan ejecutar directamente, las aplicaciones flash se reemplazan por imágenes, etc... Hasta aquí, algunos de los métodos que implementé hubieran permitido contabilizar el número de visitas (aunque no pudiera identificarlas), pero hay otro componente que hace que cuando refrescamos las páginas de perfil de los usuarios con contadores gráficos no se actualicen (ese debería ser el funcionamiento general), ese componente es una especie de memoria cache.

La memoria cache, es una memoria intermedia que se utiliza para guardar todo lo que se tiene que descargar de las páginas externas, de modo que si se solicitan varias veces una imagen de una dirección concreta, solamente la descargará una vez. Pasado cierto tiempo sin que se utilice dicha imagen, esta se elimina de la cache y se deja espacio para nuevos objetos que deban descargarse para generar la página de respuesta, de modo que las visitas que he registrado desde mi perfil procedían de las ciudades donde se encuentran los servidores de Facebook y, por muchas veces que visitara mi perfil, solamente se registraba una visita cada cierto tiempo (generalmente, una al día).

Este modelo va totalmente a contracorriente de la definición que hizo el DoD de ARPANET (antecesor del actual Internet), ya que según este modelo, el fallo o sabotaje de 1, 2,... X equipos (generalmente, hay equipos trabajando en paralelo desde distintas ubicaciones proporcionando un backup del servicio) puede hundir todo el sistema. A cambio, tiene los medios necesarios para bloquear cualquier ataque a los usuarios, ya que tendría capacidad para analizar todo el contenido al que tienen acceso.

Siguiente paso, nuevo tropezón
Una vez estudiado el modelo, descartados los mecanismos implementados, y establecida una estrategia para poder obtener:
  1. Un contador de visitas (indica el número de visitas), junto con 
  2. Un identificador de visitas (cuando el usuario que vista el perfil lo permita)
Se hace necesario poder almacenar algunos datos en alguna base de datos temporal, donde los usuarios puedan identificar quien los ha visitado. Como primer paso recurrimos a las API's de Facebook, encontrándonos con el Data Store API, donde vemos que el proyecto está en versión Beta, sin terminar de documentar y, además, va a ser rediseñado, de modo que hay que recurrir a almacenar la información en un servidor externo con unas mínimas condiciones de seguridad y que no sea muy caro.


Por fin
Tras un ciento de peripecias, ya estamos realizando las última pruebas y parece ir bien, aunque aun resta diseñar la pantalla para que el usuario pueda ver los datos de sus visitas y aún no es posible poner el cuadro en la pantalla del perfil, ya está terminado el mecanismo y funcionando como debe y ......

¿Otro cambio?
Pues sí, resulta que en la hoja de ruta de las modificaciones que se han hecho, se están realizando o se van a realizar, aparece que el actual modelo de permisos de acceso a los datos está diseñado y va a empezar a funcionar a partir de mañana, así que a ver como afecta todo esto al desarrollo que llevamos hecho.

A ver con que nos encontramos ahora, ya que con todos los cambios que se han producido en las API's, la gran mayoría de la información obtenida de Internet es obsoleta y la documentación de Facebook está siendo modificada constantemente, pero mucho puntos aún no están correctamente definidos.

lunes, 28 de junio de 2010

Windows Live Sync: Sincronizar y compartir archivos y carpetas.

Windows Live Sync es una herramienta de escritorio muy útil para la sincronización de archivos a través de Internet.

El funcionamiento es bastante sencillo:
  1. En la página de Windows Live Sync, podemos descargar la aplicación en un enlace Descargar Sync.
  2. Una vez descargado he instalado, debemos iniciar sesión utilizando el usuario y contraseña de nuestro Windows Live ID (para más información ver el post "Cuentas de correos y sus servicios asociados").
  3. Una vez iniciada sesión accedemos a la pantalla de administración de Windows Live Sync, donde podemos crear carpetas de sincronización. Durante el proceso de creación de las carpetas de sincronización, se asignan nombres lógicos a las carpetas del equipo, de modo que posteriormente podemos asignar ese mismo nombre a una carpeta física en otro ordenador.
  4. Cada vez, que dos o más de los equipos configurados para sincronización estén encendidos y, la aplicación de escritorio, esté conectada a la cuenta de Windows Live Sync, se actualizarán automáticamente los archivos y carpetas existentes en cada uno de los equipos.
Se puede crear dos tipos de carpetas, carpetas personales y carpetas compartidas. En el caso de las carpetas personales solamente puede sincronizarse entre dos equipos en los haya iniciado sesión el usuario propietario de la cuenta de Windows Live ID. En el caso de carpetas compartidas, tendremos que indicar la dirección de correo electrónico con el que queremos sincronizar la carpeta.

Antes de utilizar la aplicación y el servicio de configuración hay una serie de cosas que hay que saber:
  • Si se han modificado el mismo archivo en dos ordenadores sin que haya dado tiempo a sincronizar, se creará una copia del archivo indicando en su nombre, el nombre del ordenador en el que se ha modificado (la copia del ordenador local, tiene el nombre sin modificar).
  • Con una cuenta de Windows Live ID se permite sincronizar hasta 20 carpetas, que no pueden contener más de 20.000 archivos cada una.
  • Cada archivo individual no puede ocupar más de 4Gb.
  • En el caso de que se eliminen o renombren carpetas en uno de los equipos y no se actualicen las carpetas correspondientes antes de desconectar de Internet. Al conectarse los dos ordenadores, Windows Live Sync tomará la opción más conservadora que consiste en volver a crear las carpetas eliminadas.
  • Cuando se eliminen archivos o carpetas localmente, en el equipo remoto se moverán a la papelera de reciclaje.
¿Cuantas veces hemos tenido que enviar por correo electrónico un archivo que era demasiado grande o que por cualquier razón nos ha dado más de un quebradero de cabeza?

Utilizando Windows Live Sync, podemos crear una carpeta compartida con un usuario (creando una carpeta compartida e indicando las direcciones de correo electrónico de los destinatarios), indicando que solo tienen permiso de lectura y ya se encargará de Windows Live Sync de enviarlo sin problemas.

Seguridad y privacidad en Facebook (I)

El tema de la seguridad y privacidad de Facebook, es muy amplio de modo que iremos desgranándolo poco a poco.

Lo primero que es necesario saber es la diferencia entre un usuario, un grupo o una página, ya que constantemente están llegando invitaciones a cualquiera de estos componentes de Facebook.

Usuarios
No es inusual que nos lleguen invitaciones a supuestos grupos que realmente son usuarios. Este, quizás, sea uno de los problemas de seguridad más llamativos y en el que caen más usuarios de forma totalmente ingenua.

En Facebook, se puede limitar la información que mostramos a otros usuarios, agrupados por: Amigos, Amigos de Amigos, Todos, etc...

Si limitamos el acceso a nuestro perfil y permitimos que nuestros amigos puedan ver nuestra información (cosa de lo más lógica, son nuestros amigos), pero luego caemos en la artimaña y añadimos a un usuario de este tipo, estaremos mostrándole todos nuestros datos.

También es conveniente revisar la configuración de los "Amigos de Amigos", ya que cualquiera de nuestros amigos pueden cometer el mismo error.

Se hizo habitual el uso de usuarios en lugar de grupos cuando no existían las páginas, ya que los usuarios debían entrar en el grupo para ver las novedades y, al ser un usuario, las publicaciones que hiciera en su propio muro se vería en los perfiles de todos sus amigos, de modo que era fácil estar al día de todo cuanto se escribía sin verse obligado a visitar el perfil del grupo constantemente.

Grupos
En cuanto al problema de seguridad que representa el unirse a un grupo, es prácticamente nulo, ya que los usuarios y/o administradores del grupo solo pueden ver los datos que muestras a cualquier otro usuario, es decir, si en el grupo hay un usuario/administrador que es tu amigo, podrá ver los mismos datos que cualquiera de tus amigos, pero si es un desconocido, podrá ver los datos que ve cualquier usuario de la categoría "Todos".

Una cuestión muy distinta es que, al pertenecer a ciertos grupos estamos dando cierta información sobre nosotros, por ejemplo, si pertenecemos a un grupo que se llame "Mi niño es el más bonito", probablemente, se habrán unido padres, madres, tíos, abuelos, etc... deseosos de subir sus fotos y que en muchos casos pueden no tener la privacidad correctamente configurada.

Páginas
En mi opinión es la mejor opción para las cosas que realmente son interesantes, ya que tienen un funcionamiento que combina lo mejor de los dos perfiles anteriores:
  • Permite añadir aplicaciones al perfil (igual que en el caso de los usuarios)
  • Permite que se puedan añadir usuarios y dejar sus comentarios (como en los grupos)
  • Permite ver los comentarios de los usuarios (como en los grupos)
  • Muestra en el perfil de los usuarios las publicaciones de los administradores, pudiendo estar informado de las novedades sin visitar el perfil (como en el caso de los usuarios)
  • Los administradores/usuarios de las páginas solamente pueden ver los datos que les corresponda en función de su relación con los usuarios de su página ("Amigos", "Amigos de Amigos", "Todos", etc...)
OJO: Las páginas aparecen en la listas de amigos, de modo que tened cuidado de no confundirlos si visitáis al usuario/página aparecerán los enlaces "Ya no me gusta" o "Denunciar página" en el caso de las páginas o "Eliminar de mi lista de amigos" en el caso de usuarios.


OJO: No pongáis en vuestros perfiles de Facebook cuando os vais o volvéis de vacaciones, ya que nunca se sabe si hay un "Amigo" o "Amigo de Amigo" que está pendiente de este tipo de información.

En breve, espero poder poner en marcha una página en Facebook para que podáis estar al día de las novedades sin tener que entrar en el grupo.

sábado, 19 de junio de 2010

Virus Koobface: un viejo conocido de Facebook

El gusano koobface, salió a la luz por primera vez en agosto del año 2008. Aunque ha sido clasificado como gusano, no se propaga a sí mismo, y debería ser clasificado como troyano, (y más concretamente como spyware) ya que es aquí donde reside la peligrosidad de este virus o malware.

Koobface utiliza el perfil del usuario en las redes sociales (Facebook, MySpace, hi5, Bebo, Netlog, Twitter, etc...) para enviar mensajes a todos sus contactos diciendo ''Hey mira este video" si se pincha en el enlace que aparece debajo, simulará la presentación de un vídeo, indicando que es necesario actualizar algún codec, pero en su lugar instala el spyware correspondiente.


OJO: Aunque este es el caso que me han comentado (no he llegado a verlo), ni el mensaje que te envíe el contacto, ni el codec que es necesario instalar tienen por que coincidir, ya que la empresa de seguridad informática Kaspersky Lab informó a finales de junio del 2009 de la existencia de más de 1000 variantes de este virus.

Una vez instalado recoge toda la información posible del equipo y permanece residente en el equipo monitorizando las pulsaciones de teclas con el fin de acceder a códigos, contraseñas y números de cuenta de los usuarios infectados.

Debido al modo en que se instala (solamente es necesario un enlace a un vídeo) puede modificar su modo de propagación indiscriminadamente, pudiendo abarcar desde sencillos correos electrónicos hasta sistemas muchos más elaborados, siempre y cuando permitan poner un enlace o insertar un vídeo. Estos sistemas de propagación de virus, generalmente se aprovechan de las noticias de mayor alcance para enviar sus instaladores, como los terremotos de Chile y Haití o el mundial de fútbol.

En principio este virus puede eliminarse con cualquier antivirus, ya que lleva mucho tiempo corriendo por las redes, pero también es posible que desactive, inhabilite o inutilice los antivirus instalados, siendo recomendable ejecutar periódicamente antivirus on-line para mayor seguridad.

OJO: Recordad cambiar todas las contraseñas una vez eliminado el spyware.

Comparte el artículo
Si te ha servido el artículo recomiéndaselo o compártelo con tus amigos.


lunes, 14 de junio de 2010

OpenID: Un anillo para gobernarlos a todos


OpenID es un sistema de identificación que puede utilizarse para registrarnos en ciertas páginas WEB.

En los sitios que soporten OpenID, los usuarios no tienen que crearse una nueva cuenta de usuario para obtener acceso, sino que el OpenID sirve como mecanismo de identificación de los usuarios, evitando de este modo:
  • Al utilizar un único OpenID, no es necesario recordar cientos de usuarios y contraseñas distintas.
  • Además, es un sistema de gestión de datos, de modo que al identificarse en un sitio preguntará que datos queremos compartir.
Antecedentes
Ya en su momento, Microsoft hizo sus pinitos en este tema con sus cuentas Microsoft Passport Network (que han pasado a llamarse Windows Live ID). La solución aportada consistía en poder iniciar sesión en páginas WEB con cuentas de correo registradas como cuentas Microsoft Passport Network, en aquella época era un claro intento de conseguir más usuarios para su servicio de correos hotmail (convertir cualquier cuenta de correo en una cuenta Microsoft Passport Network o Windows Live ID, es una posibilidad que, aun hoy en día, pocas personas conocen y que no se declara abiertamente cuando necesitas un Windows Live ID para acceder a un servicio).

Google por su parte también ha pretendido convertir sus cuentas de Gmail en un nuevo Passport, de hecho hasta la fecha se utiliza para identificarse en todos los servicios de Google, pero le faltaba dar el salto al resto de los sitios WEB.

La revolución
Con la llegada de OpenID se ha revolucionado todo.

Google, por su parte, se ha unido a la identificación por OpenID, pero se ha salido el estándar anunciando el uso de Oauth para hacer algo más que identificar. Oauth define mecanismos para que una aplicación web cliente pueda acceder a la información de un usuario en otra aplicación web proveedor sin tener que utilizar el usuario y contraseña del para acceder a sus datos. De esta forma no sólo nos identificamos, sino que podemos intercambiar todo lo que tengamos en Google (contactos, favoritos, etc...)

Microsoft, también ha adoptado OpenID como proveedor, pero no como consumidor, lo que quiere decir que se puede utilizar una cuenta de Windows Live ID en otros sitios, pero no cuentas de OpenID de otros proveedores en las webs de Microsoft.

¿Por qué?
¿Por qué han abandonado estas dos compañías sus sistemas de identificación particulares?

Al parecer el enemigo común de estas, y algunas otras compañías, se llama Facebook Connect. Esta tecnología, junto con los cientos de millones de usuarios de la plataforma, se ha convertido ya en un duro competidor para empresas te trayectorias mucho mayores.

Cuentas de correo y sus servicios asociados.

Hay gran cantidad de servidores en los que es posible crearse una cuenta de correo, pero los que se llevan la mayoría del mercado son Google (Gmail) y Microsoft (Hotmail).

El por qué de esta circunstancia es muy sencilla, ofrecen un amplio abanico de funcionalidades y herramientas adicionales, que van desde la posibilidad de leer el correo online (también llamado WebMail) hasta poder almacenar gran cantidad de documentos, trabajo colaborativo, almacenar y compartir fotos y documentos, etc...

Para acceder a estos servicios es necesario tener una cuenta de usuario para acceder a los servicios.

En el caso de Microsoft, este identificador es el Windows Live ID, que puede crearse de varias formas:




En el caso de Google, este identificador es la cuenta de Gmail.

Google por su parte ofrece:
  • Mensajería instantánea (con la posibilidad de comunicación de voz y vídeo)
  • Almacenamiento virtual (hasta 1Gb para almacenar fotos).
  • Personalización de la página de inicio del buscador (iGoogle) con la posibilidad de insertar gran cantidad de Widgets.
  • Google Reader: Lector on-line de archivos RSS (Vea el post "RSS: La sindicación de contenidos.").
  • etc.....

Microsoft por su parte ofrece:
  • Mensajería instantánea (con la posibilidad de comunicación de voz y vídeo).
  • Almacenamiento virtual (hasta 25 Gb para almacenar todo tipo de archivos).
  • Sincronización de archivos (Vea el post sobre Windows Live Sync).
  • etc.....

miércoles, 9 de junio de 2010

Contadores de Visita en Facebook (2)

Están surgiendo nuevos grupos que prometen contar las visitas que se realizan al perfil de Facebook de un usuario y vuelven a ser falsos.

En esta ocasión tienes que unirte e invitar a todos tus contactos, luego tienes que descargarte una aplicación que se añade como una barra del explorador. Hasta aquí puede parecer hasta lógico, ya que la barra puede recoger la información de navegación, de modo que si todos nuestros "amigos" de Facebook tienen la barra instalada, los servidores de la aplicación pueden recoger toda esta información y cruzarla para ver quien a visitado el perfil de quien (solamente puede identificar las visitas de usuarios que tengan la barra).

El problema es que luego, lo único que hace es mostrar mucha publicidad e incluso navegar a páginas WEB no solicitadas con el fin de mostrar más publicidad. Además, te obliga a pinchar en la publicidad para ver las visitas, cosa que nunca ocurre en realidad, ya que siempre te muestra más publicidad.

He probado varias de estas aplicaciones en entornos controlados (ver el post sobre Virtualización), con cuentas nuevas de Facebook creadas al efecto y, nada más instalar la aplicación, me ha informado que ese mismo día he tenido 51 visitas (increíble teniendo en cuenta que la acababa de crear) pero lo realmente increíble es que el día anterior habían visitado mi perfil 25 personas (esto es la ostia, han visitado mi perfil incluso antes de crearlo). Recientemente han sacado una Versión 2 de dicha barra, supongo que ahora no mostrarán las visitas del día anterior.

Además, ha llegado incluso a robarme la contraseña de la cuenta de correo que utilicé para las pruebas y utilizarla para enviar correos electrónicos en mi nombre (eliminando posteriormente la bandeja de elementos enviados para no dejar rastro). También me han llegado mensajes privados de Facebook de usuarios que han instalado algunas de estas barras, con más publicidad.


La cuestión es que, en la actual situación económica, las empresas que se lo pueden permitir contratan gran cantidad de campañas de publicidad. Dichas empresas pueden llevar desde sus servidores un seguimiento de la difusión de las campañas publicitarias que han contratado, de modo que las empresas publicitarias pueden llegar a estos extremos para conseguir la difusión de las campañas que tienen que lanzar.

Posts relacionados:
Registro de páginas web visitadas en Facebook (a un paso del contador de visitas)
Contadores de Visitas en Facebook

e-Call: Tu coche llamará automáticamente a emergencias en caso de accidente

El sistema eCall permitirá que el tiempo de asistencia de los servicios de emergencia se reduzca considerablemente, principalmente en los ...