Desarrollo una aplicacion web que funcionara en un servidor local. Deseamos registrar en una BD, por motivos de seguridad, algun dato que identifique a la máquina que entra y usa la aplicacion. Sabemos que existe la manera de obtener el numero ip con lineas como: request.remote_addr request.env['REMOTE_ADDR'] request.remote_ip Pero, por nuestra experiencia desarrollando con otros lenguajes como php sabemos que no siempre este numero ip es unico de una sola máquina Ya que cuando una red esta bajo un proxy, desde afuera es visto con la ip del proxy de manera que no es posible diferenciar cada máquina. Aunque esta aplicacion funcionara en un servidor local con maquinas conectadas en una LAN, en ocasionaes debera ser manipulada desde afuera por agentes de soporte técnico que podrian estar conectados a intenet atravez de un proxy. Por lo que se necesita que el numero ip(u otro tipo de identificador) obtenido, corresponda a una sola máquina a fin de que quede registrado en el sistema. Quisiera que me dieran alguna sujerencia para poder discernir o identificar con las herramientas que proporciona Rails, cual es la máquina que esta entrando a mi aplicación Rails.
on 12.08.2008 17:20
on 12.08.2008 17:42
Hola, > Deseamos registrar en una BD, por motivos de seguridad, algun dato que > identifique a la máquina que entra y usa la aplicacion. > En una aplicación web no tienes muchas opciones. Hay que tener claro que una aplicación web viene determinada por las características/limitaciones del protocolo HTTP. Entonces.. en una petición HTTP hay que tener claro que lo que te llega es lo que la máquina cliente decide que te va a enviar, ni más ni menos. Y esto que la máquina cliente te manda, viene en tres sitios: Cabeceras, Cookies, Parámetros. En la primera opción, cabeceras estándar, lo más parecido a un identificador es la IP. Si la IP no te vale, hay que ver qué más podemos sacar de los otros sitios. De una Cookie puedes sacar cualquier cosa que tú previamente le hayas mandado, así que si esa aproximación te vale, puedes usar el mismo identificador de session de la cookie de session de rails. Si no te vale la IP, ni te vale una cookie (básicamente porque no te fíes del uso de la cookie que hagan los usuarios de tu aplicación, que en tu caso al ser una aplicación al parecer de uso interno no debería pasar mucho), una aproximación factible es poner un login en la aplicación, y entonces guardar la información del usuario que accede, y no la máquina concreta. Esto debería ser suficiente para casi cualquier necesidad, a no ser que lo que quieras sea limitar el uso de la aplicación por un tema de licencias. Si estás en el caso de poner licencias a tu aplicación, o algún otro uso que requiera de verdad de verdad identificar a la máquina, te refiero al mail que contesté ayer a uno de los esparza preguntando sobre la Mac Address.. o lo intentas con un applet, o con un activeX. También te quedaría la opción de utilizar un certificado digital, aunque como los certificados son exportables, nadie te impide usar un certificado desde diferentes sitios. Esta pregunta realmente no es que sea de Rails en sí misma, sino de desarrollo web en general. Supongo que encontrarás diferentes enfoques y discusiones en google buscando por sistemas de encuestas o de votaciones, que tienen exactamente el mismo problema (identificar inequivocamente quién ha votado ya para no dejarle hacerlo más veces). saludos, javier ramírez p.s. sería interesante que no enviéis el mismo mail exacto dos personas diferentes a la lista, más que nada porque sólo crean ruido y es probable que las conversaciones se crucen y acaben perdiendo eficiencia -- javier ramírez ..i do ruby on rails development in madrid, spain, at http://www.aspgems.com ..you can find out more about me on http://formatinternet.wordpress.com and http://workingwithrails.com/person/5987-javier-ramirez