Imprimir página | Cerrar ventana

Seguridad bbdd

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85359
Fecha de impresión: 29/Marzo/2024 a las 15:49


Tema: Seguridad bbdd
Publicado por: Parche
Asunto: Seguridad bbdd
Fecha de publicación: 20/Junio/2020 a las 20:38
Buenas tardes:

Después de ver este hilo:

http://www.mvp-access.com/foro/forum_posts.asp?TID=83467

Me surgen algunas dudas de novato...

- Tengo una bbdd con muchas consultas, forms, etc. La idea de embeber las consultas en los forms es demasiado.

- He pensado en que si creo un accde (A2007) con bloqueo de tecla shift, contraseña incial (creo recordar no se donde lo vi que más de 18 caracteres ya es fuerte), otra contraseña de inicio de form, vba también con contraseña, ocultando las tablas vnculadas y cambiando la extensión a: accdr (runtime) tiene mucha seguridad (seguro que no jeje.. ya entiendo que si vuelvo a cambiar la extensión se puede acceder al código con shift habilitado, y se verían las tablas/consultas).

- Es la alternativa a no tener las tablas en la misma aplicación (que ya vi en el hilo como se llaman desde otra bbdd) y las consultas en la propia bbdd (no embeber el vba en el form) y no tener que ir form por form embebiendo código, etc.

- ¿Es así segura la bbdd? ¿qué se me escapa en tema seguridad? si me apuras ¿si sólo bloqueo la tecla shift por código y las teclas especiales, panel de exploración, etc. vamos las opciones de access es suficiente para no ver "las tripas" de la bbdd?

- El desbloqueo de la tecla shift se hablitaría en la bbdd sólo por el admin.

Gracias y saludos.






Respuestas:
Publicado por: javier.mil
Fecha de publicación: 20/Junio/2020 a las 22:47
Buenas

Quienes son los usuarios que van usar tu aplicación ?
Que tipo de aplicación es ?
Donde se usa tu aplicación ?
Que tipo de datos guardas en tus tablas ?
Vas a poner password en el codigo VBA ?



-------------
https://www.accessdemo.info" rel="nofollow - https://www.accessdemo.info





Publicado por: Parche
Fecha de publicación: 21/Junio/2020 a las 09:01
Buenos días:


Entiendo que depende de las variables que me preguntas una seguridad será mejor que otra, etc. pero intento centrar la cuestión.

Si es imposible que alguien externo al admin pueda saltarse el bloqueo de la tecla shift al inicio (teniendo un método de habilitarla una vez en la bbdd)... ¿es segura la aplicación y no es necesario trasladar las tablas, ocultar el vba con contraseña, embeber las consultas en los forms, etc?

¿O se puede saltar el bloqueo shift a linicio de la bbdd? Si es así ya hablamos de otra cosa y es necesario más seguridad.

Gracias por tu tiempo y saludos.


Publicado por: javier.mil
Fecha de publicación: 21/Junio/2020 a las 11:26
Buenas

Simplificando en seguridad todo lo que es posible proteger también es posible desproteger........ dicho esto,.......  La protección / desproteccion de tecla SHIFT también estaría incluida peroooo depende de como se hubiese protegido ,...........en mi Web hay un método (el cuarto parámetro) 
https://www.accessdemo.info/docs_seguridad/proteccion-cuarto-parametro-access.html" rel="nofollow - https://www.accessdemo.info/docs_seguridad/proteccion-cuarto-parametro-access.html
donde se explica como añadir una capa extra de seguridad... ....


Por eso reitero lo que preguntaba al inicio , es necesario entender en que contexto nos movemos....... La seguridad tiene que estar adecuada a lo que se pretende proteger , ........ No tendría sentido  aplicar medidas de seguridad extremas, para proteger una aplicación  que cualquiera fuese capaz de crear o hacer .....


 


-------------
https://www.accessdemo.info" rel="nofollow - https://www.accessdemo.info





Publicado por: Parche
Fecha de publicación: 21/Junio/2020 a las 22:30
Buenas noches:

¿Entiendo que se podrá entonces desde una bbdd externa acceder al cuarto parámetro para cambiarlo? Pq. desde la actual como se hace (teclear shift) no entiendo como se podría cambiar.

Estoy viendo tu web en el apartado Seguridad.

Gracias y saludos.


Publicado por: Parche
Fecha de publicación: 21/Junio/2020 a las 22:40
Buenas de nuevo :-)

Estoy probando la función: RT_RutaTabla (sin contraseña) del enlace inicial y no me deja continuar (ver final).

Tengo la BBDD en C:\  (solo tablas).

constDirectorio (en un módulo) como constante:
Public Const constDirectorio As String = "C:\Base.accdb"

La función en un módulo:

Function RT_RutaTabla(Nombretabla As String) As String
RT_RutaTabla = "[" & constDirectorio & "].[" & Nombretabla & "]"
End Function

Y falla aquí:

If (IsNull(DLookup("[Usuario]", RT_RutaTabla("tbUsuarios"), "[Usuario] ='" & Me.CboUsuarios.Column(1) & _ sigue...

Con este mensaje:

https://www.dropbox.com/s/kql60xap2cq6ef2/Error_tabla.jpg?dl=0

¿Hay que hacer algo distinto en las funciones de dominio?

Pq. he cargado en un form la tabla externa y bien, en un combox tb.

Gracias y saludos.

Edición:

- He conseguido un avance parcial con:

        Set sExiste = CurrentDb.OpenRecordset("select * from " & RT_RutaTabla("tbusuarios") & " where Usuario ='" & Me.CboUsuarios.Column(1) & _
        "' And Pass = '" & Me.txtPass.Value & "' ")

... que es correcto.

... ¿Pero además del trabajo de adaptar en toda la bbdd la ruta también hay que cambiar todas las funciones de dominio para adaptarlas como he editado? Locura Cry

Gracias y saludos.



Publicado por: javier.mil
Fecha de publicación: 23/Junio/2020 a las 09:11
Ves con cuidado en tu campo txtPass un usuario avanzado podría injectar codigo SQL que se saltase el password,........
En el campo Me.txtPass.Value tendrías que mejorar esa instrucción dándole mas robustez  .........




-------------
https://www.accessdemo.info" rel="nofollow - https://www.accessdemo.info





Publicado por: Parche
Fecha de publicación: 23/Junio/2020 a las 17:00
Buenas tardes:

- El txtpass tiene formato de contraseña.

- Y en el evento al salir:

If Comprueba(Me.txtPass) = False Then
MensajeInf ("La contraseña sólo debe contener mayúsculas/minúsculas y/o números")
Me.txtPass.SetFocus
Me.txtPass = ""
Exit Sub
End If

¿Es eso lo que decías?

Gracias y saludos.

-- Queda pendiente me comentes el comentario anterior del cuatro parametro --- Wink


Publicado por: javier.mil
Fecha de publicación: 24/Junio/2020 a las 09:52
Depende de lo que haga la función Comprueba ,........ Si realmente hace lo que parece que hace es  "La contraseña sólo debe contener mayúsculas/minúsculas y/o números" entonces estaría bien,.....

Pero personalmente preferiría cambiar el SQL

Tu código SQL
Set sExiste = CurrentDb.OpenRecordset("select * from " & RT_RutaTabla("tbusuarios") & " where Usuario ='" & Me.CboUsuarios.Column(1) & _
        "' And Pass = '" & Me.txtPass.Value & "' ")


Por este otro
Set sExiste = CurrentDb.OpenRecordset("select * from " & RT_RutaTabla("tbusuarios") & " where Usuario ='" & Me.CboUsuarios.Column(1) & _
        "' And Pass = '" &
Replace(Me.txtPass, "'", "''") & "' ") 

 



-------------
https://www.accessdemo.info" rel="nofollow - https://www.accessdemo.info





Publicado por: Parche
Fecha de publicación: 27/Junio/2020 a las 09:35
Buenos días:

Por mi parte se puede cerrar el hilo.

Gracias y saludos.



Imprimir página | Cerrar ventana