¿Es más segura la información de esquema de hashing para el cliente al generar consultas SQL?

3

Estoy planeando implementar un sistema web en el que las API y la presentación para CRUD en las tablas de datos son Se genera automáticamente, así en phpMyAdmin. Cómo planeo implementar esto es construir sentencias de SQL basadas en las solicitudes del cliente.

  1. El cliente recibe información de metadatos (tabla, columna) del servidor.
  2. El usuario interactúa, hace algo, por ejemplo, actualiza una columna en una fila.
  3. El cliente envía una solicitud, incluido un identificador para la tabla , un identificador para la fila, identificador de la columna y los nuevos datos de la columna.
  4. El servidor construye la consulta y ejecuta cosas.

Ahora lo que me interesa son las palabras resaltadas en el # 3. El simple uso de identificadores simples (el propio nombre) permitirá a los usuarios inteligentes modificar fácilmente las solicitudes a su voluntad (por ejemplo, dirigir la solicitud a otra tabla / columna). Otra cosa importante que considero es tener una presentación de solo lectura, que aún debería incluir los metadatos de la tabla para cosas como la clasificación, el filtrado, etc. Estoy bastante inquietante al exponer dichos metadatos cuando se usa comunicación sin cifrar.

Siempre que haya seguridad suficiente (cifrado de transporte (excepto en algunos casos), saneamiento de entradas, verificación de privilegios), mi pregunta es:

  • Hará hash (ocultando, quizás de una manera diferente) los metadatos de la tabla (nombre de la tabla y / o nombres de columna) proporciona cualquier información adicional ¿Seguridad? ¿O se ingresará el saneamiento (asegurándose de que el nombre de la tabla que se pasa sea realmente una tabla, lo mismo para las columnas) y los controles de privilegio sean suficientes?

Me di cuenta de que, en la mayoría de los casos (es decir, a excepción del escenario de solo lectura que se indica más arriba), el usuario ya está dentro de la escotilla hermética , ¿Pero el hash aún mejoraría la seguridad?

    
pregunta Mark Garcia 28.02.2015 - 07:03
fuente

2 respuestas

3

Sería la seguridad a través de la oscuridad, entonces no, no mejoraría la seguridad. Se ha demostrado una y otra vez, si su única defensa es que "nadie conoce el mecanismo tecnológico implementado, entonces todo lo que necesita es que una persona se tropiece con él y, en cuestión de minutos, cientos de personas lo sabrán".

PUEDE hacer las cosas más difíciles, pero solo hace falta una persona ingeniosa para desenfocar su esquema.

    
respondido por el Lucas Kauffman 28.02.2015 - 08:59
fuente
1

Como señaló Lucas, ocultar nombres es simplemente una ofuscación, y estoy de acuerdo. Si desea permitir que los usuarios solo editen ciertas tablas / columnas, debe implementar una seguridad en la programación que verifique que los objetos permitidos puedan modificarse. No asuma que el usuario solo intentará hacer las cosas que le presente. Es más seguro asumir que el usuario puede (y lo hará) jugar con la solicitud de todas las formas posibles.

    
respondido por el TTT 28.02.2015 - 18:33
fuente

Lea otras preguntas en las etiquetas