sql >> Base de Datos >  >> RDS >> Mysql

Ocultar el verdadero ID de objeto de la base de datos en las URL

Esta pregunta se ha hecho mucho, con diferentes opciones de palabras (lo que hace que sea difícil decir "¡Búscalo!"). Este hecho provocó una publicación de blog titulada The Guía completa para el cifrado de parámetros de URL en PHP .

Lo que la gente quiere hacer aquí

Qué debería hacer la gente en su lugar

Explicación

Por lo general, la gente quiere corto URL de aspecto aleatorio. Esto no le deja mucho espacio para cifrar y luego autenticar el ID de registro de la base de datos que desea ofuscar. Hacerlo requeriría una longitud mínima de URL de 32 bytes (para HMAC-SHA256), que es de 44 caracteres cuando se codifica en base64.

Una estrategia más simple es generar una cadena aleatoria (ver random_compat para una implementación PHP5 de random_bytes() y random_int() para generar estas cadenas) y haga referencia a esa columna en su lugar.

Además, los hashids están rotos por simple criptoanálisis. Su conclusión dice:

El ataque que he descrito es significativamente mejor que un ataque de fuerza bruta, por lo que desde un punto de vista criptográfico se considera que el algoritmo está roto, es bastante fácil recuperar la sal; lo que hace posible que un atacante ejecute la codificación en cualquier dirección e invalida la propiedad 2 para una función hash ideal.

No confíes en eso.