¿Existe alguna inquietud con respecto a la exposición de la clave principal de la base de datos? [duplicar]

6

¿Existe algún riesgo si, por ejemplo, permito que los usuarios finales conozcan la clave principal asociada a los usuarios en la base de datos?

    
pregunta PHPst 02.03.2016 - 14:57
fuente

3 respuestas

5

Depende de cuál es la clave principal. Si la clave principal es la dirección de correo electrónico del usuario u otra información personal, obviamente, nunca debe exponerla a nadie más que al usuario. Incluso si la clave principal fuera el nombre de usuario en forma de FirstName.LastName debería estar cansado de la exposición. Aunque, por lo general, la clave principal será un número entero o guid que tiene poco significado por sí mismo, por lo que basaré la Resto de esta respuesta en el caso típico.

En general, si la aplicación está diseñada y asegurada de manera adecuada, no debe suponer un riesgo para la seguridad al revelar un ID de usuario sin sentido. Sin embargo, esto no es cierto para todos los campos de clave principal en la base de datos. Por ejemplo, supongamos que hay una tabla de validación de correo electrónico que tiene una guía que aparece en un enlace que se envía por correo electrónico al usuario. Esos identificadores de un solo uso no deben hacerse públicos porque, de lo contrario, alguien podría enviar una dirección de correo electrónico falsa y aún así validarla.

También hay otras consideraciones que no están necesariamente relacionadas con la seguridad. Por ejemplo, si usa ID de enteros y tiene una página de perfil pública como Matthew mencionó en su comentario, entonces alguien podría iterar a través de todos sus usuarios y encontrar información que tal vez no deberían saber. Algunos ejemplos pueden ser los datos demográficos de su base de usuarios, o el número exacto de usuarios que tiene su sitio web, etc. Tenga en cuenta que esto no sería un problema si utiliza guías aleatorias para la clave principal, o si no expone a los usuarios públicos. la clave principal.

    
respondido por el TTT 02.03.2016 - 16:37
fuente
2

La información que intenta mantener confidencial es los registros en la base de datos , no las etiquetas reales en las columnas. Creo que es bastante común usar PKs con nombres como " id ", " pid ", " cid " ... así que esconderlo ser solo una instancia de la seguridad a través de la oscuridad.

No es algo que me gustaría anunciar, pero no me atrevería a esconderlo.

    
respondido por el Purefan 02.03.2016 - 15:09
fuente
1

Como regla general, la seguridad de una aplicación (y su backend) nunca debe confiar en el secreto. Supongamos el peor de los casos: donde se sabe todo y su línea de defensa es el código correcto (codificación correcta en sí mismo y elección inteligente de algoritmos). Los proyectos de código abierto son auditables por cualquier persona, incluyendo (para tomar el ejemplo que mencionó) la estructura de una base de datos.

Security by obscurity no es algo malo por sí solo, sino solo como una capa adicional que tiene sus usos (generalmente no en seguridad pura, sino como una capa reflectante para algún tipo de ataques con guión)

    
respondido por el WoJ 02.03.2016 - 15:08
fuente

Lea otras preguntas en las etiquetas