Exponer los nombres de los campos de la base de datos en HTML

17

A menudo veo oportunidades para optimizar el código del lado del servidor si los nombres de los formularios HTML son exactamente iguales a los nombres de los campos de la base de datos que finalmente se actualizan.

El inconveniente obviamente es que esto está exponiendo información sobre la estructura de la base de datos a simple vista.

Por supuesto, esta información solo es útil si existe otra debilidad, pero parece que se entrega información en una placa.

Me gustaría saber si las personas piensan que esto es bajo riesgo y si exponen nombres de campos como este sin preocuparse.

    
pregunta Imag1ne 07.01.2016 - 14:22
fuente

3 respuestas

22

Es muy común hacer esto. Como ha notado, hay un beneficio significativo para mantener el código simple.

Si tiene una vulnerabilidad de inyección de SQL, un atacante puede descubrir la estructura de su base de datos utilizando INFORMATION_SCHEMA. Así que ocultar la estructura de su base de datos no le ayuda mucho.

Otra preocupación en esta área es Vulnerabilidades de asignación masiva . Tal vez un usuario pueda actualizar sus detalles de usuario: nombre, correo electrónico, contraseña, etc. Pero no se supone que puedan actualizar el campo "is_admin". Con el código que enruta automáticamente los campos de formulario a las declaraciones SQL, a veces pueden aparecer vulnerabilidades como esta.

    
respondido por el paj28 07.01.2016 - 15:07
fuente
4

Un escenario común donde la revelación de nombres de campo de DB al atacante arruina la seguridad es la inyección de SQL. En este caso, es posible que el atacante no pueda ejecutar show tables , select * from INFORMATION_SCHEMA.TABLES y similares para obtener toda la estructura de la base de datos. Es posible que tenga acceso de lectura muy limitado (por ejemplo, inyección de SQL ciego ). Determinar la estructura de la base de datos en tales casos puede requerir algo de tiempo y conocimiento .

Si le da al atacante sugerencias sobre las tablas y los campos de la base de datos, puede probar varias inyecciones usando los nombres que le proporcionó. El ataque será mucho más rápido, requerirá menos calificación por parte del atacante y mucho más difícil de detectar en los registros.

    
respondido por el Dmitry Grigoryev 07.01.2016 - 15:14
fuente
0

Creo que exponer los nombres de los campos de la base de datos no es una buena práctica, pero no es un riesgo tan alto para los campos en sí mismos, porque para acceder a esos campos, uno tiene que hackear sus credenciales de la base de datos, y una vez que las credenciales son robadas, entonces No importa si ya conocen los campos o no, ellos mismos lo explorarán por sí mismos.

Habiendo dicho esto, los campos de la base de datos expuestos pueden usarse para algún otro tipo de ataque de seguridad. (en el paso de recopilación de información)

La conclusión es: nunca exponga los nombres de los campos si no tiene que hacerlo.

    
respondido por el Ijaz Ahmad Khan 07.01.2016 - 14:41
fuente

Lea otras preguntas en las etiquetas