Identificaciones seguras en el navegador [cerrado]

2

Con frecuencia, necesitamos enviar ID de entidad al lado del cliente.

¿Cómo podríamos proteger estos datos (especialmente los identificadores)?

Incluso si ciframos usando la misma clave cada vez, se puede identificar mediante análisis.

Por ejemplo, si cifro el ID "1" para decir "ae!" (usando cualquier algoritmo), esa misma identificación también se puede usar más adelante.

¿Entonces deberíamos usar el ID de sesión como clave para enviar datos al lado del cliente (esto validará los datos que solo la sesión activa está activa)? ¿O podríamos agregar al azar una cadena a la identificación "1", cifrarla y luego enviarla al lado del cliente (esto también se puede enviar la próxima vez)?

¿O hay alguna otra manera?

¿Cuál es la mejor práctica para este tipo de seguridad?

Estoy usando .Net MVC C #. Pero creo que la pregunta es irrelevante para la plataforma.

Tomemos un ejemplo.

En el siguiente enlace, la identificación se proporciona en la fuente de datos, que es texto sin formato, por lo que cualquier persona con conocimientos técnicos puede modificarla (mediante la consola de desarrolladores del navegador).

En mi humilde opinión, debería estar encriptado, para que no se pueda cambiar (porque el valor cambiado no es aceptable debido al encriptado).

enlace

    
pregunta Anonymous Creator 26.05.2018 - 21:26
fuente

1 respuesta

0

Puedes usar un hash de los identificadores. Por ejemplo, en pseudo-código,

sha2(entry_id || delimiter || user_id)

hará lo que quieras:

  • todos los usuarios verán el mismo contenido en la misma ID,
  • no los usuarios, ni siquiera los usuarios diferentes que podrían cooperar podrán identificar a las entidades por sus hashes.
  • sin embargo, todos los usuarios verán la misma entidad detrás del mismo hash.

La desventaja del método es que necesita un almacenamiento de back-end para las claves hash por usuario: los usuarios referirán a las entidades solo por su hash, y ni siquiera podrá descodificar la entidad de ellas.

Puede obtener mayor seguridad vinculando el hash a la sesión en lugar del usuario:

sha2(entry_id || delimiter || session_id)

Esto aumentará la seguridad (ni siquiera el usuario podrá identificar las entidades entre sus sesiones), y tendrá que almacenar los hashes solo hasta el tiempo de espera de la sesión. Sin embargo, el usuario no podrá producir un almacenamiento de entidades del lado del cliente (lo que también puede ser una ventaja).

    
respondido por el peterh 28.05.2018 - 00:13
fuente

Lea otras preguntas en las etiquetas