Access

Comprensión y administración de Microsoft Access Shift Bypass

Microsoft Access Shift Bypass es una característica que permite a los usuarios abrir una base de datos de acceso sin ejecutar opciones de inicio o macros Autoexec. Esta funcionalidad puede ser crucial para los desarrolladores y administradores, pero puede presentar riesgos de seguridad en aplicaciones implementadas.

Cómo funciona el bypass de turno

Al abrir una base de datos de Microsoft Access, los usuarios pueden mantener presionada la tecla de cambio para evitar las propiedades de inicio y la macro AutoExec. Esta característica es particularmente útil para la resolución de problemas y el acceso a bases de datos que podrían tener errores en su código de inicio.

Deshabilitar el bypass de cambio a través de la propiedad de la base de datos de IlowByPassKey

Por defecto, Shift Bypass está habilitado en todas las bases de datos de Microsoft Access. Sin embargo, es posible deshabilitar esta funcionalidad estableciendo la propiedad de la base de datos TailTByPassKey.

Lamentablemente, la propiedad de IlmoByPassKey no es accesible de ninguna manera a través de la GUI y debe configurarse a través del código VBA.

La propiedad de tampybypasskey es una propiedad booleana donde:

Valor de propiedadDescripción del efecto
VerdaderoShift Bypass está permitido/habilitación (sin garantía)
Estado predeterminado de una base de datos de acceso
FALSOShift bypass está deshabilitado (asegurado)

Determinación del valor actual de la propiedad de TailTbyPassKey

Para validar el valor actual de la propiedad de TISHBYPASSKEY para la base de datos actual, simplemente podemos hacer algo como:

Function Local_GetAllowBypassKey() As Boolean
    Dim oDb                   As DAO.Database

    On Error GoTo Error_Handler

    Set oDb = CurrentDb
    Local_GetAllowBypassKey = oDb.Properties("AllowBypassKey")

Error_Handler_Exit:
    On Error Resume Next
    Set oDb = Nothing
    Exit Function

Error_Handler:
    If Err.Number = 3270 Then    ' Property not found
        Local_GetAllowBypassKey = True    'If not set, it is allowed/True
    Else
        MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _
               "Error Source: Local_GetAllowBypassKey" & vbCrLf & _
               "Error Number: " & Err.Number & vbCrLf & _
               "Error Description: " & Err.Description & _
               Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
               , vbOKOnly + vbCritical, "An Error has Occurred!"
    End If
    Resume Error_Handler_Exit
End Function

Recordando el hecho de que si la propiedad no existe, entonces eso es lo mismo que tenerlo establecido en verdadero.

Configuración del valor de la propiedad de TailTbyPassKey

Si deseamos establecer el valor, entonces podemos modificar lo anterior a algo más como:

Sub Local_SetAllowBypassKey(bAllowBypassKey As Boolean)
    Dim oDb                   As DAO.Database
    Dim oProp                 As DAO.Property

    On Error GoTo Error_Handler

    Set oDb = CurrentDb
    oDb.Properties("AllowBypassKey") = bAllowBypassKey

Error_Handler_Exit:
    On Error Resume Next
    Set oProp = Nothing
    Set oDb = Nothing
    Exit Sub

Error_Handler:
    If Err.Number = 3270 Then    ' Property not found, so create it and add it to the db
        Set oProp = oDb.CreateProperty("AllowBypassKey", dbBoolean, bAllowBypassKey)
        oDb.Properties.Append oProp
    Else
        MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _
               "Error Source: Local_SetAllowBypassKey" & vbCrLf & _
               "Error Number: " & Err.Number & vbCrLf & _
               "Error Description: " & Err.Description & _
               Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
               , vbOKOnly + vbCritical, "An Error has Occurred!"
    End If
    Resume Error_Handler_Exit
End Sub

Dónde deshabilitar el cambio de cambio y «asegurar» su base de datos antes de la distribución a sus usuarios finales, simplemente lo haríamos:

Local_SetAllowBypassKey False

Y para volver a habilitar el cambio de paso, lo haríamos:

Local_SetAllowBypassKey True

Shift Bypass Propiedad Utilidad de configuración

Hace un tiempo creé una utilidad para poder administrar esta propiedad de forma remota para varias bases de datos. Por lo tanto, adapté el código anterior para que funcione con bases de datos remotas y creé un formulario simple para seleccionar y administrar la propiedad desde:

Recientemente lo pulí un poco y lo proporcioné a continuación para su uso.

Descargo de responsabilidad/Notas:

Si no tiene Microsoft Access, simplemente descargue e instale la versión de tiempo de ejecución disponible libremente (esto permite ejecutar bases de datos de MS Access, pero no modificar su diseño):

Tiempo de ejecución de Microsoft Access 2010
Tiempo de ejecución de Microsoft Access 2013
Tiempo de ejecución de Microsoft Access 2016
Microsoft 365 Access Runtime

Todas las muestras de código, descargar muestras, enlaces, … en este sitio se proporcionan ‘Como es‘.

En ningún caso Devhut.net o Carda Consultants Inc. serán responsables ante el cliente/usuario final o cualquier tercero por cualquier daño, incluidas las ganancias perdidas, los ahorros perdidos u otros daños incidentales, consecuentes o especiales que surgen de la operación de la operación de o incapacidad para operar el software que Carda Consultants Inc. ha proporcionado, incluso si Carda Consultants Inc. ha sido informado de la posibilidad de tales daños.

Descargar una base de datos de demostración

Siéntase libre de descargar una copia 100% desbloqueada de demostración (ACCDB) utilizando el enlace proporcionado a continuación:

Descargue «Utilidad de configuración de propiedad de bypass de cambio» Shiftbypass.zip – Descargado 0 veces – 101.77 KB

También tenga en cuenta que aunque la base de datos de demostración es un archivo ACCDB, el mismo formulario/código exacto funcionará igualmente en un archivo MDB y puede interactuar con los archivos MDB tal como está.

Pensamientos finales

Es importante tener en cuenta que al deshabilitar el bypass Shift puede disuadir a los usuarios casuales de evitar las opciones de inicio, no es una solución de seguridad integral. Los usuarios determinados con conocimiento suficiente aún pueden encontrar formas de eludir estas restricciones al volver a habilitar la propiedad.

Entonces, si bien la función Bypass Shift en Microsoft Access es una herramienta valiosa para los desarrolladores, no es un medio infalible y debería ser parte de un enfoque de seguridad más grande.

Recursos sobre el tema

Historial de la página

FechaResumen de cambios
2025-02-06Lanzamiento inicial

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba