Red de conocimiento informático - Conocimiento informático - Cómo evitar la descarga de bases de datos de Access

Cómo evitar la descarga de bases de datos de Access

Ayer utilicé Animator para realizar pruebas, cambié el nombre del archivo data.mdb a archivo data.asp y lo coloqué en el directorio wwwroot. Luego, después de ingresar la ruta de data.asp en IE, descubrí que IE muestra un archivo en blanco, haga clic derecho: vea el archivo fuente, salte del Bloc de notas, guarde el contenido como un archivo .mdb, ábralo con ACCESS y encuentre eso. Se requiere una contraseña, es decir, al menos el archivo. La cabeza fue destruida. Luego

Ayer hice un experimento con Animator y cambié el nombre del archivo data.mdb a data.asp y lo coloqué en el directorio wwwroot. Luego ingrese la ruta de data.asp en IE y descubra que IE muestra un espacio en blanco, haga clic derecho en -gt para ver el archivo fuente, aparece el bloc de notas, guarde el contenido como un archivo .mdb, ábralo con ACCESS y busque eso. Se requiere una contraseña, es decir, al menos el encabezado del archivo está dañado.

Luego use Flashget para probar, descargue el archivo data.asp y guárdelo como un archivo data.mdb. ¡Se descubre que está intacto cuando se abre con ACCESS! Parece que muchos programadores creen que cambiar el sufijo mdb a asp puede impedir la descarga, ¡lo cual es incorrecto! Descargar la base de datos backend es sin duda un desastre para un sitio ASP Access. Hoy, encontré artículos de varias partes y resumí los siguientes nueve métodos para evitar que se descargue la base de datos (se agradecen las adiciones).

1. Utilice su imaginación para modificar el nombre del archivo de la base de datos

No hace falta decir que este es el método más vago, pero si el atacante obtiene la ruta de la base de datos a través de un tercero, es encima. . Por ejemplo, si un atacante solo pudiera obtener la lista correcta pero accidentalmente viera la ruta a la base de datos, podría descargar la base de datos nuevamente y estudiarla. Además, los archivos de datos suelen ser de gran tamaño y los nombres de los archivos no se pueden ocultar. Por tanto, la confidencialidad es mínima.

2. Cambie el sufijo del nombre de la base de datos a ASA, ASP, etc.

Este método debe combinarse con algunas configuraciones; de lo contrario, ocurrirá la situación al principio de este artículo.

(1) Agregar campo binario.

(2) Después de agregar texto a este archivo, IIS lo analizará de acuerdo con la sintaxis ASP y luego informará un error 500 y, naturalmente, no podrá descargarlo. Sin embargo, si simplemente agrega campos de texto o notas en la base de datos

Cómo hacerlo:

Primero, use el Bloc de notas para crear un nuevo archivo con el contenido como

Luego, use Access Abra su archivo de base de datos, cree una nueva tabla, asígnele un nombre aleatorio, agregue un campo de objeto OLE a la tabla, luego agregue un registro, inserte el archivo de texto creado antes, si se hace correctamente, debería ver un mensaje llamado nuevo registro "Paquete de datos". Eso es todo.

3. Agregue "#" antes del nombre de la base de datos

Simplemente agregue # antes del nombre del archivo de la base de datos y luego modifique la dirección de la base de datos en el archivo de conexión de la base de datos (como conn.asp). ). El principio es identificar solo la parte con # antes del nombre al descargar, para que pueda eliminarse automáticamente más tarde, como la que desea descargar: /date/#123.mdb (suponiendo que exista). Ya sea IE o FLASHGET, y así sucesivamente hasta /date/index.htm (documentos index.asp, default.jsp, etc. que configura en la página de inicio de IIS).

Además, conservar ciertos espacios en el nombre del archivo de la base de datos también juega un papel similar. Debido a la particularidad del protocolo HTTP para la resolución de direcciones, los espacios se codificarán como "", como /fecha/123. ; 456 .mdb, /date/123456.mdb cuando se descarga. No hay ningún archivo 123456.mdb en nuestro directorio, por lo que la descarga no es válida.

La descarga después de esta modificación no será válida. Incluso si expone la dirección de la base de datos, generalmente otros no podrán descargarla.

4. Cifrar la base de datos

Primero, al seleccionar "Herramientas-gt; Seguridad-gt; Cifrar/Descifrar base de datos", seleccione la base de datos (como: empleado.mdb). y luego conecte OK, aparecerá una ventana "Guardar base de datos cifrada como", guárdela como: empleado1.mdb. Luego, empleado.mdb se codificará y guardará como empleado1.mdb. Se codificará y guardará como empleado1.mdb.... Es importante tener en cuenta que esto no establece una contraseña para la base de datos, sino que solo codifica el archivo de la base de datos para evitar que otros vean el contenido del archivo de la base de datos utilizando otras herramientas.

El siguiente paso para cifrar la base de datos es abrir el archivo empleado1.mdb codificado y seleccionar la opción "Exclusivo" al abrir. Luego seleccione el menú "Herramientas->Seguridad->Establecer contraseña de base de datos" e ingrese la contraseña. De esta manera, incluso si alguien más obtiene el archivo empleador1.mdb, no podrá ver empleador1.mdb sin la contraseña.

Modifique la página de conexión de la base de datos después del cifrado, por ejemplo:

conn.open "driver={ microsoft access driver&nb sp;

(*.mdb) } ;uid=admin;pwd=contraseña de la base de datos;dbq=ruta de la base de datos"

Después de esta modificación, incluso si se descarga la base de datos, otros no pueden abrirla (siempre que la contraseña en la página de conexión de su base de datos no se filtre) ).

Pero vale la pena señalar que debido a que el mecanismo de cifrado de la base de datos de Access es relativamente simple, es fácil descifrarlo incluso si se establece una contraseña. El sistema de base de datos forma una cadena cifrada "distinguiendo" la contraseña ingresada por el usuario usando una clave fija y la almacena en el archivo *.mdb en una región que comienza en la dirección "&H42". Por tanto, un buen programador puede crear fácilmente un pequeño programa con decenas de líneas para obtener fácilmente la contraseña de cualquier base de datos de Access. Por lo tanto, mientras se descargue la base de datos, se desconoce la seguridad de su información.

5. Coloque la base de datos fuera del directorio WEB o coloque el archivo de conexión de la base de datos en otros directorios virtuales.

Si su directorio WEB es e:\webroot, puede colocar la base de datos en la carpeta e:\data y en la página de conexión de la base de datos en e:\webroot, cambie la dirección de conexión de la base de datos a: ".../data/nombre de la base de datos". /data/nombre de la base de datos", para que la base de datos se pueda llamar normalmente, pero no se pueda descargar porque no está en el directorio WEB. Este método generalmente no es adecuado para usuarios que compran espacio virtual.

6. Utilice fuente de datos ODBC

En programación como ASP, si es posible, debe intentar utilizar fuentes de datos ODBC y no escribir el nombre de la base de datos en el programa, de lo contrario, el nombre de la base de datos se perderá. con el código fuente ASP confidencial, por ejemplo:

DBPath = Server.MapPath("...")./123/ abc/asfadf.mdb ")

conn.open "driver={Microsoft Access Driver&nb sp ;(*.mdb) };dbq="amp;

Podemos ver que aunque el nombre de la base de datos es extraño, los directorios ocultos no están tan organizados como los Código fuente ASP.

Si utiliza una fuente de datos ODBC, no habrá tal problema: conn.open "nombre ODBC-DSN", pero esto es más problemático. Si se mueve el directorio, se debe restablecer la fuente de datos. Para obtener métodos más convenientes, consulte. 7 y 8. método!

7. Agregue un nombre de base de datos, como asignación de extensión MDB.

Este método se implementa modificando la configuración de IIS. Es adecuado para amigos que tienen controles de IIS, pero no para usuarios. que compran hosts virtuales (a menos que se haya configurado la administración). Creo que este método es el mejor actualmente. Un solo cambio puede evitar que se descargue toda la base de datos del sitio web. Incluso si la dirección de destino está expuesta, no es necesario modificar el código para evitar las descargas.

Agregamos análisis de aplicaciones de archivos .mdb en Propiedades de IIS--Directorio de inicio--Configuración--Asignación--Extensiones de aplicaciones. Tenga en cuenta que la selección de DLL (o EXE, etc.) aquí no parece ser arbitraria. Si la selección no es apropiada, este archivo MDB aún se puede descargar. Tenga en cuenta que es mejor no seleccionar asp.dll, etc. Puedes probarlo tú mismo y modificar los errores (404 o 500, etc.) que ocurren al descargar la base de datos.

8. Ventajas de usar .net

Dongmuniao ha escrito un archivo "Herramienta anti-hotlink WBAL" en Internet para evitar descargas ilegales.

Pero eso sólo evita las descargas no locales y no desempeña la verdadera función anti-descarga de la base de datos. Sin embargo, este método es casi el mismo que el quinto método. ¡Puede modificar el archivo .NET para evitar la descarga local!

Entre estos métodos, solo los métodos 7 y 8 se pueden cambiar de manera uniforme. Si cambia la configuración, se puede evitar que se descargue la base de datos de todo el sitio web. Para otros métodos, el nombre de la base de datos y la conexión. El archivo debe modificarse. Es bastante problemático, ¡pero eso es todo lo que puede hacer por los amigos anfitriones virtuales!

De hecho, el sexto método debería ser una extensión del quinto método, que puede lograr funciones especiales. Sin embargo, para los hosts que no admiten .net o temen configuraciones problemáticas, es mejor usarlo. el quinto método es directo y el sexto método predeterminado es conectarse al mismo host copiando la publicación del foro o del libro de visitas y luego hacer clic para descargar. (Porque dichas páginas de referencia provienen del mismo host)

9. Utilice la configuración de permisos del archivo de partición NTFS (bypercyboy)

Ya sabemos que ASP.NET usa ADO.NET para acceder al Se puede acceder a la base de datos y a las bases de datos de Access a través de conexiones OleDb, que son bases de datos de gama baja que utilizamos con frecuencia. -Esta es una de las bases de datos de gama baja que utilizamos con frecuencia. Este artículo analiza algunos mensajes de error que puede ver en ASP.NET. Se puede ver que cuando ocurren errores de acceso, los archivos de bases de datos creados por Access2000 y AccessXP tendrán diferentes mensajes de error. Espero que esto ayude. Una cosa más, espero que este artículo pueda brindarle una nueva comprensión de la configuración de permisos NTFS para archivos de bases de datos de Access en ASP.NET.

(1) Proceso experimental

Para facilitar la descripción, demos un ejemplo experimental específico: la aplicación es /test y la base de datos se almacena en D:\wwwroot\test \data\db1, ya sabemos que hay un usuario virtual llamado ASPNET en ASP.NET para acceder a la base de datos como identidad, necesitamos darle a esta cuenta permisos NTFS específicos para que el programa ASP.NET pueda funcionar correctamente.

Para obtener la configuración de permisos NTFS más estricta, le dimos al programa los permisos NTFS más bajos posibles al comienzo del experimento:

a) D:\wwwroot\test\data \ carpeta Los permisos otorgados al usuario ASPNET son los siguientes:

Permitir Denegar

Control total amp;n bsp; □ □

Modificar amp;nbs p; ; amp;nbs p; □ □

Leer y ejecutar √ □ ;

Listar directorios de carpetas ; √ □

Leer amp;nbs p; amp;nbs p; √ □

Escribe amp;nbs p; amp;nbs p □ □

b )D:\wwwroot\test\data\db1.mdb El archivo en sí proporciona el usuario ASPNET los siguientes permisos:

√ √ Permite que los permisos heredables de la clase principal se propaguen al objeto

1.1 Para un programa aspx que solo contiene el comando "SELECT", el conjunto de permisos anterior se ejecutará sin ningún obstáculo. Es decir, los permisos anteriores son suficientes para dichos programas.

1.2 Para programas aspx que contienen "ACTUALIZAR", "INSERTAR", "ACTUALIZAR" y otros comandos.

1.3 Para programas aspx que contienen comandos "SELECCIONAR", se han establecido los permisos anteriores.

(a) Si db1.mdb es una base de datos creada por Access2000, se producirá el siguiente error:

Error del servidor en la aplicación "/test".

El motor de base de datos Microsoft Jet no puede abrir el archivo "D:\wwwroot\test\data\". El archivo ha sido abierto exclusivamente por otro usuario, o no tiene permiso para visualizar los datos.

Explicación: Se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener detalles sobre el error y el origen del código que lo provocó.

Detalles de la excepción: System.Data.OleDb.OleDbException: el motor de base de datos MicrosoftJet no puede abrir el archivo "D:\wwwroot\test\data\". El archivo ha sido abierto exclusivamente por otro usuario o no tiene permiso para visualizar los datos.

(b) Si db1.mdb es una base de datos creada por AccessXP, se producirá el siguiente error: "Error del servidor en la aplicación.

La operación debe utilizar una consulta actualizable.

p>

Explicación: Se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener detalles sobre el error y el origen del código que causó el error. : System.Data.OleDb.OleDbException: La operación debe utilizar una consulta actualizable

(c) Motivo del análisis preliminar: Debido a la inclusión de "UPDATE", "INSERT", "UPDATE" y otros comandos. , es necesario escribir en el archivo de la base de datos, por lo que los permisos anteriores no pueden cumplir con este requisito y debemos relajar aún más los permisos.

Hemos liberado algunos permisos,

a) La carpeta D:\wwwroot\test\data\ permanece sin cambios;

b) D:\ wwwroot\ El archivo test\data\db1.mdb otorga al usuario ASPNET los siguientes permisos:

Permitir denegar

Control total &n bsp; nbs p; amp;nbs p;□ □

Leer y ejecutar √ □ ;

Listar directorio de carpetas √ □

Leer amp; ; nbs p; √ □

Escribe amp; nbs p; amp.nbs p; √ □

1.3 Continuar el experimento después de liberar permisos

Si db1.mdb es una base de datos creada por Access2000, se producirá el siguiente error: El servidor tiene un error en la aplicación "/test".

No se puede bloquear el archivo.

Explicación: Se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener detalles sobre el error y el origen del código que lo provocó.

Detalles de la excepción: System.Data.OleDb.OleDbException: no se pudo bloquear el archivo.

(b) Si db1.mdb es una base de datos creada por AccessXP, no se produce ningún error.

(c) Motivo del análisis preliminar: descubrimos que al abrir la base de datos de Access, se generará un archivo *.ldb con el mismo nombre en el directorio donde se encuentra. Este es el indicador de bloqueo de Access. En vista de esto, suponemos que cuando el usuario ASPNET accede a la base de datos de Access, también necesita generar una etiqueta de bloqueo y el directorio no le permite escribir, por lo que se produjo un error. Sin embargo, la base de datos creada por AccessXP no tiene este error por razones desconocidas.

La referencia original proviene del webmaster.

Hemos relajado aún más los permisos,

a) Darle al usuario la D:\wwwroot\test\data \ carpeta ASPNET siguientes permisos:

Permitir Denegar

Control total amp;n bsp; □ □

Modificar nbs p; □

Leer Ejecutar √ □ ;

Listar directorios de carpetas ; √ □

Leer amp;nbs p; amp;nbs p;√ □

Escribe amperio; amperio; amperio; √ □

b) D. El archivo \test\data\db1.mdb en sí le otorga al usuario ASPNET los siguientes permisos:

√Permitir que los permisos heredables de la clase principal se propaguen al objeto

1.4 Continuar Durante el experimento, descubrimos que el error se resolvió y los permisos anteriores son los "permisos mínimos" que debemos liberar.

(a) Si db1.mdb es una base de datos creada por Access2000, encontraremos un pequeño problema: el archivo *.ldb generado no se eliminará por sí solo y el archivo seguirá existiendo después del acceso. pero este problema no existe. Afectará el funcionamiento normal de ASP.NET.

(b) Si db1.mdb es una base de datos creada por AccessXP, no ocurrirán problemas similares a los anteriores.

(c) Análisis preliminar del motivo: solo le dimos a ASPNET el permiso para escribir la carpeta, pero no el permiso para modificarla. Por lo tanto, una vez escrito el archivo, el contenido no se puede modificar y. *.ldb no se puede eliminar.

Si debe resolver este problema, puede liberar aún más los permisos, de la siguiente manera:

a) Otorgue al usuario ASPNET los siguientes permisos en D:\wwwroot\test\data \ carpeta :

Permitir Denegar

Control total amp;n bsp; □ □

Modificar amp;nbs p; amp; nbs p;√ □

Leer Ejecutar √ □ ;

Listar directorios de carpetas ; √ □

Leer amp;nbs p; √ □

Escribe amp; nbs p; nbs p; El archivo \wwwroot\test data\db1.mdb proporciona los siguientes permisos para el usuario ASPNET:

√ Permite que los permisos heredables de la clase principal se propaguen al objeto

1.5 Por cierto, pruebe con otra situación: dejamos db1.mdb abierto para editarlo en Access cuando accedemos a ASP.NET.

(a) Si db1.mdb es una base de datos creada por Access2000, no encontraremos ningún problema.

(b) Si db1.mdb es una base de datos creada por AccessXP, se producirá el siguiente error:&nb.

(t003)