** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Cuarto parámetro AllowBypassKey
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoCuarto parámetro AllowBypassKey

 Responder Responder
Autor
Mensaje
Parche Ver desplegable
Habitual
Habitual


Unido: 03/Julio/2018
Localización: Alicante
Estado: Sin conexión
Puntos: 170
Enlace directo a este mensaje Tema: Cuarto parámetro AllowBypassKey
    Enviado: 24/Junio/2020 a las 13:49
Buenas tardes:


Tengo la duda de cómo se puede interceptar el parametro DDL de la propiedad: AllowBypassKey, cuando se está abriendo la bbdd (A2007) pulsando la tecla shift...

Más que nada, por seguridad claro, y saber como se haría para evitar que otros me lo hagan Cry

Javier.Mil me lo indicó hace unos posts:
http://www.mvp-access.com/foro/seguridad-bbdd_topic85359.html

Su web:
https://www.accessdemo.info/docs_seguridad/proteccion-cuarto-parametro-access.html


Gracias y saludos.
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 24/Junio/2020 a las 14:20
Hola!

Tengo este código:-

Private Sub Cmd_Mantenimiento_Click()
If InputBox("Clave?", "Bloqueo de BD") = "1234567" Then
    ap_EnableShift    
Else
    ap_DisableShift    
End If
End Sub


Function ap_DisableShift()
'This function disable the shift at startup. This action causes
'the Autoexec macro and Startup properties to always be executed.

On Error GoTo errDisableShift

Dim db As DAO.Database
Dim prop As DAO.Property
Const conPropNotFound = 3270

Set db = CurrentDb()

'This next line disables the shift key on startup.
db.Properties("AllowByPassKey") = False

'The function is successful.
Exit Function

errDisableShift:
'The first part of this error routine creates the "AllowByPassKey
'property if it does not exist.
If Err = conPropNotFound Then
Set prop = db.CreateProperty("AllowByPassKey", _
dbBoolean, False)
db.Properties.Append prop
Resume Next
Else
MsgBox "Function 'ap_DisableShift' did not complete successfully."
Exit Function
End If

End Function


Function ap_EnableShift()
'This function enables the SHIFT key at startup. This action causes
'the Autoexec macro and the Startup properties to be bypassed
'if the user holds down the SHIFT key when the user opens the database.

On Error GoTo errEnableShift

Dim db As DAO.Database
Dim prop As DAO.Property
Const conPropNotFound = 3270

Set db = CurrentDb()

'This next line of code disables the SHIFT key on startup.
db.Properties("AllowByPassKey") = True

'function successful
Exit Function

errEnableShift:
'The first part of this error routine creates the "AllowByPassKey
'property if it does not exist.
If Err = conPropNotFound Then
Set prop = db.CreateProperty("AllowByPassKey", _
dbBoolean, True)
db.Properties.Append prop
Resume Next
Else
MsgBox "Function 'ap_DisableShift' did not complete successfully."
Exit Function
End If

End Function


Lo que hace es si se abre el Cuadro de Entrada (InputBox) y no se introdcue la contraseña la proxima vez que abras la BD se desactiva la Tecla Shift y se se introduce la contraseña la proxima apertura de la BD activa la Tecla Shift. Espero que te sirva.!
Un Saludo.
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4812
Enlace directo a este mensaje Enviado: 24/Junio/2020 a las 15:49
Para asegurar correctamente la techa SHIFT hay que hacer uso del cuarto parámetro, porque un usuario malicioso podría cambiar esa propiedad desde fuera.


PRIMERO
La forma de resolverlo es añadiendo a CreateProperty el cuarto parámetro (DLL) y ponerlo a True , ya que por defecto si No se especifica estará a False

CreateProperty(propiedad, tipo, valor, DDL )

Normalmente omitimos el 4º cuarto parámetro (DDL quedará = False), de este modo estamos permitiendo que a través de código se pueda acceder a la propiedad y cambiarla, sin importar que usuario está accediendo a esta propiedad.

Donde pones:
Set prop = db.CreateProperty("AllowByPassKey", dbBoolean, False)

Deberia poner:
Set prop = db.CreateProperty("AllowByPassKey", dbBoolean, True, True)


SEGUNDO
Para que 4 parámetro funcione adecuadamente, antes hemos tenido que crear un GRUPO DE TRABAJO -MDW- y un USUARIO distinto del ADMINISTRADOR que es el que viene por defecto ..........

Repito y muy importante para evitar que externamente alguien de forma maliciosa se salte la tecla SHIFT es creando un Usuario distinto a Administrador pero con todos los permisos de Administrador , es decir seria los permisos que pudiera tener un Super Usuario, pero sin ser Administrador

Para crear un Usuario con permisos de Administrador pero sin ser Administrador eso ya es otra tema de discusión………..

Para realizar tal cambio habría que hacerlo con una versión inferior a Access 2007 y modificar el fichero MDW , ya que con versiones superiores los Grupos de Trabajo de Access No se pueden modificar desde la plataforma de Access ......

Actualmente todos los Access (incluido Access 2019 y Access 365) hasta la fecha siguen haciendo uso del MDW


Si pones esto en la ventana de inmediato de tu Access aparecera el Grupo de Trabajo al que tu Access está vinculado
?SysCmd(acSysCmdGetWorkgroupFile)







Editado por javier.mil - 24/Junio/2020 a las 15:57
Arriba
Parche Ver desplegable
Habitual
Habitual


Unido: 03/Julio/2018
Localización: Alicante
Estado: Sin conexión
Puntos: 170
Enlace directo a este mensaje Enviado: 24/Junio/2020 a las 19:01
Buenas tardes:

Ahora la pregunta obvia del siguiente paso a seguir... si uso A2007, no tengo ningún mdw creado en versión anterior...

¿Cómo se puede asegurar la protección del cuarto parámetro con A2007?

Habrá que crear el usuario desde A2007, no se puede usar .mdw... ¿tengo que buscarme un access 2003 y crear un archivo mdw?

Gracias y saludos.
Arriba
javier.mil Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 10/Agosto/2005
Localización: España
Estado: Sin conexión
Puntos: 4812
Enlace directo a este mensaje Enviado: 24/Junio/2020 a las 20:09
A ver vamos analizar un poco la situación:

Si un atacante entra en tu aplicación pulsando la tecla SHIFT , que podria hacer ???????
Piénsalo....

y ahora imagina que Tu aplicación esta en formato ACCDE con los datos de tus Tablas encriptados, has borrado el Menu de los Ribbons y No tienes visible el Panel de navegación ?????
¿ Que podría hacer ?

Fíjate que No hace falta proteger la tecla SHIFT, si el resto de la aplicación la tienes bien protegida


Sinceramente la solución expuesta por Mounir es la solución "normal" para el 99% de los usuarios ,.......... Yo No me complicaría la vida ,.......

Ahora bien,..........  si eres de los que sigues pensando que necesitas la protección de la tecla SHIFT entonces es que tu aplicación es buenísima en ese caso necesitas el uso de cuarto parámetro junto con la creación de un Super Usuario con permisos de Administrador esta aqui explicado

Y si ! ,...... Para poder manipular el fichero MDW necesitas una versión de Access inferior a Access 2007

perooooo creo que un usuario normal hubiese abandonado antes ...........



 

Arriba
Parche Ver desplegable
Habitual
Habitual


Unido: 03/Julio/2018
Localización: Alicante
Estado: Sin conexión
Puntos: 170
Enlace directo a este mensaje Enviado: 25/Junio/2020 a las 08:38
Buenos días:


La idea era saber, desde mi desconcimiento, la única forma de que un atacante no entrara en la bbdd. Lo comenté en otro post. Si nadie podía acceder por shift ¿no será esta única forma la más eficaz? Para no hacer otros métodos (encriptar, contraseña vba, etc.).

Ahora lo veo más claro.

Con la curiosidad de hacer un mdw en un access inferior, pero es otro tema Wink


Gracias a los dos por vuestro tiempo y saludos.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable