¿Cómo protejo los permisos de usuario?

Iniciado por miltonprogramador, 21 Diciembre 2016, 14:37 PM

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

miltonprogramador

Hola... acá les traigo una duda...

Tradicionalmente para controlar los permisos de mis usuarios (los privilegios de acceso) utilizo consultas a la base de datos al ejecutar el software para armar un arreglo con los módulos a los que se tienen acceso, de esa manera, utilizando la arquitectura modelo vista controlador puedo renderizar (mostrar en la vista) solo los elementos que a las que si tiene acceso. Es decir, si un usuario no puede agregar nuevos usuarios, entonces el botón nuevo usuario no se vera en la pantalla o pudiera estar desactivado (para el caso es indiferente cualquiera de las dos), asi mismo si por alguna razón alguien logra activar el botón utilizando ingenieria inversa o algo asi, el arreglo (el de la lista de privilegios obtenido de la BD) permite la validación para dar permiso o no... HE ALLI MI DILEMA..

Me pregunto: ¿Si han logrado desbloquear un botón del sistema también podrán hacerse de mi arreglo de privilegios?

Suponiendo que si es correcta la hipótesis, entonces ¿como debo hacerlo?...

El sistema es una aplicación cliente/servidor... se me ocurrió que el cliente maneje el menor código posible, pero por menos código que maneje, así haga la consulta al servidor del permiso, este entregará un dato que indique si esta permisado para esa acción o no.... ¿Y ENTONCES ?

Aclarenme un poco la mente por favor...



Aprendiendo de los mejores llegas a ser uno de ellos...

Aprendiendo de los mejores se llega a ser uno de ellos...

engel lex

si hacen ingeniería inversa potencialmente obtendrían obtendrán tantos datos como tu programa contenga... incluye contraseñas, direcciones, valores, etc...

coloca todo el aspecto visual y que el server le diga que mostrar cuando... y no acepte algo que no debería estar en el grado de ese usuario...

es muy difícil defenderse de ing inversa debido a que a final de cuentas si destripan el programa poco queda oculto... pero también hay que contar que no muchos son capaces de hacerlo, así que si es un programa pago, a medida que vendas, ve contratando expertos de seguridad para mantener la seguridad en la escala de publico que tengas




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.

miltonprogramador

HOla angel lex... mil gracias por contestar... tu comentario esta bastante bueno, confirma mi inquietud...pero me propones que el server indique que mostrar y cuando. Es exactamente lo que intento hacer, el problema es que quiza lo este pensando de la manera equivocada porque imagino que los datos que envie el server indicando aquellos que si puede verse y lo que no también estará susceptible a ser alcanzado por la ingenieria inversa... o e equivoco?


Si puedes proponerme (o alguien más quien lea este S.O.S jeje) alguna manera de hacerlo, sería de gran ayuda, puesto que he pensado maneras pero analizándolas yo mismo las descarto por ser opciones inseguras...

AUXILIO!
Aprendiendo de los mejores se llega a ser uno de ellos...

engel lex

si, pero en general los datos que envíe son los que el usuario ya conoce... es igual que con una pagina web... piénsalo así... en el javascirpt no se puede ocultar nada... y aún así las webs son seguras y no tienen problemas
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.

miltonprogramador

Bien... lo veo de esta manera:

Coloco un id en un elemento y si deseo que la acción de ese elemento este disponible consulto por su id al server y este me retornaría por ejemplo un booleano para habilitarlo o no. y si de alguna manera lograran habilitar la acción en el cliente, al llegar la solicitud de la acción al servidor este validaría nuevamente y anularía la acción... así lo veo factible... ¿Lo veo bien?

Me preocupa mucho este tema porque hablo de un proyecto comercial que manejará dinero ajeno, lo que lo hace muy delicado y atractivo a las malas intenciones...
Aprendiendo de los mejores se llega a ser uno de ellos...