¿Cuánto tiempo debe durar un enlace compartido (token en la URL)?

0

Supongamos que tenemos una operación de servicio web como:

GetComments(encryptedDiscussionID) // returns list of comments

Donde encryptedDiscussionID es la versión cifrada del debateID real en la base de datos. El cifrado se realiza en el servidor mediante una clave que es privada para el servidor.

Al cliente ya se le ha enviado el encryptedDiscussionID .

Mi pregunta es: ¿Qué tan largo debe ser el encryptedDiscussionID para garantizar que sea seguro / no se puede adivinar?

    
pregunta GarethOwen 09.12.2015 - 11:41
fuente

1 respuesta

2

Eso depende de la cantidad de conjeturas que permita y de la posibilidad de que alguien tenga éxito al adivinar un ID de discusión encriptado válido. También debe tener en cuenta la cantidad de ID de discusión que tendrá.

Si tiene 1000 de estas ID y tiene 10 000 ID de discusión posibles, solo tomará un promedio de 10 intentos para adivinar dicha ID.

Si toma alfanuméricos encryptedDiscussionIDs, la cantidad de ID posibles es igual a 26 ^ de longitud.

Entonces, si toma el ID de discusión con una longitud de 10 caracteres, tendrá 1,41 * 10 ^ 12 ID posibles. Si tiene 1000 ID válidas en su base de datos, entonces tomará en promedio 1,41 * 10 ^ 9 intentos de adivinar una ID válida. Supongo que sería capaz de detectar tal cantidad de intentos. Pero ya que agregar caracteres adicionales a encryptedDiscussionID lo haría aún más largo.

Si puede proporcionar más detalles, es posible dar una respuesta más detallada.

¿Cómo está haciendo la búsqueda del lado del servidor de estos ID de discusión encriptados? ¿Supongo que no calculamos esto cada vez que alguien emite una consulta? ¿Los guardas también?

No olvide que si alguien puede ver (- > atacante de red pasivo, oler) estos ID de discusión encriptados en la red, todavía podrá ver la lista de comentarios.

    
respondido por el Silver 09.12.2015 - 11:59
fuente

Lea otras preguntas en las etiquetas