manejo de sesiones en java

D9N1

Saludos,

Estoy programando un servidor en Java (con una versión cliente en android) y tengo el siguiente problema:

Para realizar una conexión rápida entre ambos utilizo REST (RESTful), lo que me permite una conexión sin necesidad de la transmisión de ficheros XML. La conexión se realiza mediante el protocolo HTTP utilizando algo tan simple como GET's y POST's (igualito que un formulario en html).

El problema es que para manejar sesiones no veo la forma de crear una especie de cookie invulnerable, ya que al tener acceso web (aunque no sea público, el acceso está ahi) se podría acceder a cualquier apartado fácilmente.

Sobre el tema sesiones hay bastante información en applets webs (Servlets) pero no es lo que busco, simplemente necesito información del manejo de sesiones entre dos aplicaciones Java

Otro detalle es que me gustaría capar el acceso via Web, aunque esto me parece casi imposible...!

Un saludo

LOc0

Una sesión no es más que un conjunto de variables temporales que guardas en tu aplicación identificadas mediante un ID pseudoaleatorio lo suficientemente grande para evitar colisiones o ser "adivinado" por un cliente malintencionado. La primera vez que un cliente conecta, creas su ID, reservas espacio para sus variables de sesión y le das el ID en forma de cookie (o como quieras). Y en sucesivas conexiones obligas a que el cliente te envie su ID de sesión para identificarlo. Es así de simple.

Salu2 ;)

D9N1

lo había pensado así, generando un ID aleatorio al hacer login (desde el servidor), devolviendolo SOLO en ese momento de hacer login, y guardarlo en el cliente. El único problema que veo es que los servicios web usando REST reciben los parámetros usando el protocolo HTTP, por lo tanto sería relativamente fácil leer esa transmision. Tocará investigar si hay opción de esconder las cosas usando REST, o optar por SOAP con ficheros xml y tal...

gracias de todos modos por el consejo, un saludo!

1 respuesta
elkaoD

#3 lo hagas como lo hagas HTTP es sniffable. Usa HTTPS, pero una key cuesta dinero (o un mensaje muy feo).

1 respuesta
D9N1

#4 cierto, HTTPS lo descarto, pero debe ser HTTP para evitar problemas de firewalls y similares. Había pensado en hacer transmisión de ficheros XML por HTTP (cifrando los ficheros) pero lo veo mucho engorro en el cliente android, ya que tendría una dependencia muy grande, además de la transmisión más pesada de ficheros...!

1 respuesta
elkaoD

#5 pero es que hagas lo que hagas si no hay TLS de por medio se va a ver con cualquier sniffer. HTTPS es tu única solución.

1 respuesta
D9N1

#6 si, pero al cifrar el archivo (el contenido) por mucho que lo consigan no podrían 'entenderlo' sin utilizar el cliente. De momento me parece la solución más viable pero más engorrosa, la otra opción es como dije antes, utilizar ID's aleatorios generados desde el cliente al loguear (tal como había pensado, y tal como dijo LOc0)

1 respuesta
Soltrac

#7 El cifrado por oscuridad NO es cifrado, no es necesario "entender" lo que envía el cliente, con copiarlo y pegarlo te vale para identificarte por otro usuario.

Si quieres seguridad o HTTPs o no pierdas el tiempo.

1 1 respuesta
D9N1

#8 seguiré dandole vueltas entonces, gracias. La verdad, el HTTPs lo podría utilizar, ya que me da bastante igual que la dirección sea muy larga, ya que se utilizará solo como servicio web, y el cliente en ningun momento verá el URL

1 respuesta
Soltrac

#9 Existen certificados https low cost anyway.

http://www.godaddy.com/compare/gdcompare3_ssl.aspx?gclid=CJ3Mm8buurYCFVDMtAodygwAmA&isc=ssfl4es02&currencytype=eur&ef_id=XMNO73nizhwAAIa4:20130408102918:s

Por ejemplo y seguro que para lo que lo necesitas no necesitas nada más. Obviamente la garantía que te ofrecen es de "solo" 10.000$ comparada con las q ofrecen las grandes, pero bueno, no se que andas desarrollando, pero si no hay dinero de por medio te sobra.

1 respuesta
D9N1

#10 me viene genial, ya que se trata de una aplicación que de momento será versión alpha, para presentarla a una empresa, y ya si le gusta lo que ve se mejora todo en general (principalmente seguridad). De momento los gastos, además de tiempo, solo son de un servidor hospedado en ovh. Lo hablaré con mi compañero, ya que por invertir esos 5$ y pegarnos el curro ahora podemos ganar mucho para un futuro cambio. Gracias de nuevo por el interés de todos, y si alguno necesita ayuda en el tema de servicios web (o cualquier otro tema) que no dude en enviar mensaje, ya que no soy muy asiduo a leer el foro!

1 respuesta
elkaoD

#11 ojo si usas subdominios. Certificado wildcard son 160€.

Usuarios habituales

  • elkaoD
  • D9N1
  • Soltrac
  • LOc0