Securizando access token en aplicacion js de lado del cliente

Iniciado por 50l3r, 16 Julio 2016, 22:15 PM

0 Miembros y 1 Visitante están viendo este tema.

50l3r

Buenas tardes gente, hace mucho que no me paso por aquí,

Tengo en proceso de desarrollo un proyecto de maquetación y diseño de páginas web para pymes con la gestion de datos de manera centralizada, de forma que todas y cada una de las webs creadas ataquen a una api rest que les devuelva todos los datos tales como noticias, productos, información de la empresa...etc.

Mi idea es crear un backend donde gestionar cada cuenta de cliente y agregar entidades tales como productos, noticias...etc A este backend accederán los clientes y podran gestionar únicamente su información y tanto su web como cualquier otro proyecto suyo podrá acceder mediante una api rest a la información.

El objetivo es que cada proyecto web este creado puramente en html y js gracias al apoyo de angularjs u otro framework, obviando cualquier lenguaje de lado del servidor y realizando simplemente peticiones a la api para recoger y gestionar los datos.

La parte del backend ya la tengo realizada, pero tengo una duda:

¿Como puedo privatizar el acceso a la información de un cliente en concreto? Las peticiones crud a la api se realizan a traves de javascript y cualquier persona podría ver el token de seguridad, copiarlo y gestionar la información por su cuenta, llegandose incluso a poder crear una web propia con los datos del cliente.

Entiendo que no sea suficiente con ssl, así que haber que me podeis decir ;)

engel lex

sino es suficiente con ssl entonces no hay opción... ya la capa de seguridad establecida con ssl/tsl debe ser lo suficiente para evitar cualquier intento de MitM... si atraviesan tu seguridad, quiere decir que usan computación cuantica para calcular las raices o (lo que es más probable) que lo implantaste mal... fuera de eso, nada en jscript es seguro...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

EFEX

Ademas de la api key, le pides al cliente que probee de una url donde estara alojado su web.
GITHUB 

50l3r

La capa de seguridad https preveerá ataques mitm estoy seguro, pero me refiero a que cuando javascript realiza una peticion ajax, la traza es visible en el debugger del navegador:



Ahora mismo este proyecto lo estoy manejando por sesiones, pero el objetivo es usar acces tokens, y este seria visible al igual que la propia sesion si no me equivoco.

Dado que la información de cada web se recogeria por ajax, cualquier persona que la visitara podria tener a mano la información y utilizarla en su beneficio, pudiendo hacer las peticiones desde otro sitio ¿no es asi? El token dejaria de ser algo "oculto"

EFEX

Cita de: 50l3r en 17 Julio 2016, 15:36 PM
.. pero me refiero a que cuando javascript realiza una peticion ajax, la traza es visible en el debugger del navegador.

Creo que por mas sea visible, el servidor reconoce esa peticion y descarta las demas como cuando sucede un ataque csrf, en el se usa un token.

Cita de: 50l3r en 17 Julio 2016, 15:36 PM
Ahora mismo este proyecto lo estoy manejando por sesiones, pero el objetivo es usar acces tokens, y este seria visible al igual que la propia sesion si no me equivoco.

Podrias buscar otros servicios RESTful que trabajen con js para ver como lo realizan.

Cita de: 50l3r en 17 Julio 2016, 15:36 PM
Dado que la información de cada web se recogeria por ajax, cualquier persona que la visitara podria tener a mano la información y utilizarla en su beneficio, pudiendo hacer las peticiones desde otro sitio ¿no es asi? El token dejaria de ser algo "oculto"

Es como te decia, contra ataques csrf el framework en el que estes trabajando en tu backend deberia de proveerte de un token.

No entiendo del todo del proyecto como es usado, ni tampoco hice antes una api restful, asi que prodria estar equibocandome.

off: Sos el creador de gamers.ly? Y yo que queria hacerte la competencia  ;D, que le paso al sitio?
GITHUB 

50l3r

Cita de: EFEX en 19 Julio 2016, 03:52 AM
Creo que por mas sea visible, el servidor reconoce esa peticion y descarta las demas como cuando sucede un ataque csrf, en el se usa un token.

Podrias buscar otros servicios RESTful que trabajen con js para ver como lo realizan.

Es como te decia, contra ataques csrf el framework en el que estes trabajando en tu backend deberia de proveerte de un token.

No entiendo del todo del proyecto como es usado, ni tampoco hice antes una api restful, asi que prodria estar equibocandome.

off: Sos el creador de gamers.ly? Y yo que queria hacerte la competencia  ;D, que le paso al sitio?

El problema es que los tokens para evitar csrf se actualizan por cada petición, y aquí un token puede tener una caducidad, pero no es generado constantemente. Se me ocurrió generar un whitelist con una serie de direcciones ip pero las peticiones las realiza el cliente y no el servidor que aloja la web.

Si, soy el creador de gamers.ly. No seguí con ello por el tema legal que conlleva tener un sitio como pordede y similares. El proyecto lo termine por actualizar y estaba de vicio, pero quedó en saco roto.